Skip to content

Commit

Permalink
readme
Browse files Browse the repository at this point in the history
  • Loading branch information
emredipi committed Mar 10, 2024
1 parent 2c732ac commit ffba01c
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 0 deletions.
109 changes: 109 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
![Package Image](https://banners.beyondco.de/Laravel%20Cloudflare%20Cache.png?theme=dark&packageManager=composer+require&packageName=yediyuz%2Flaravel-cloudflare-cache&pattern=architect&style=style_1&description=Serve+millions+of+requests+by+caching+with+Cloudflare&md=1&showWatermark=0&fontSize=100px&images=server#gh-dark-mode-only)
![Package Image](https://banners.beyondco.de/Laravel%20Cloudflare%20Cache.png?theme=light&packageManager=composer+require&packageName=yediyuz%2Flaravel-cloudflare-cache&pattern=architect&style=style_1&description=Serve+millions+of+requests+by+caching+with+Cloudflare&md=1&showWatermark=0&fontSize=100px&images=server#gh-light-mode-only)

# Laravel Cloudflare Cache

<p>
Expand All @@ -14,6 +17,112 @@ You can install the package via composer:
composer require yediyuz/laravel-cloudflare-cache
```

You can publish the config file with:

```bash
php artisan vendor:publish --tag="cloudflare-cache-config"
```

Add environment variables to .env file
```dotenv
[email protected] #Cloudflare account email address
CLOUDFLARE_CACHE_KEY=XXXXXXX #Cloudflare API_KEY
CLOUDFLARE_CACHE_IDENTIFIER=XXXXXXX #ZONE_ID
CLOUDFLARE_DEFAULT_CACHE_TTL=600 #10 minutes
CLOUDFLARE_CACHE_DEBUG=false
```

## Usage

### Define routes to cache
You can use cache groups for your static contents.
```php
Route::cache()->group(function () {
Route::get('/content', function () {
return 'content';
});
});
```

You can use cache tags, so you can clear your caches easily. Specify custom ttl for expire time in seconds. When you do not pass ttl, it will use default ttl given in the config.
```php
Route::cache(tags: ['tag1', 'tag2'], ttl: 600)->group(function () {
Route::get('/content_with_tags', function () {
return 'content';
});
});

Route::cache(tags: ['staticPages'])->group(function () {
//
});
```
### Clear Cache

#### Purges everything
https://developers.cloudflare.com/cache/how-to/purge-cache/purge-everything/
```php
CloudflareCache::purgeEverything()
```

#### Purges by urls
https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-single-file/
```php
CloudflareCache::purgeByUrls([
'https://example.com/hello',
])
```

#### Purges by prefixes (Enterprise only)
https://developers.cloudflare.com/cache/how-to/purge-cache/purge_by_prefix/
```php
CloudflareCache::purgeByPrefixes([
'www.example.com/foo',
])
```

#### Purges by tags (Enterprise only)
https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-tags/
```php
CloudflareCache::purgeByTags([
'staticPages',
])
```

#### Purges by hostname (Enterprise only)
https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-hostname/
```php
CloudflareCache::purgeByHosts([
'www.example.com',
'images.example.com',
])
```

Post update example to clear cache
```php
<?php

namespace App\Http\Controllers;

use App\Http\Requests\UpdatePostRequest;
use App\Models\Post;
use Yediyuz\CloudflareCache\Facades\CloudflareCache;

class PostController extends Controller
{
public function update(Post $post, UpdatePostRequest $request)
{
$post->update($request->validated());

CloudflareCache::purgeByUrls([
route('post.show', $post->id)
]);

return back()->with('message', 'Post updated and url cache purged');
}
}
```


## Testing

```bash
Expand Down
3 changes: 3 additions & 0 deletions config/cloudflare-cache.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
return [
'debug' => env('CLOUDFLARE_CACHE_DEBUG', false),

// your cloudflare email address
'api_email' => env('CLOUDFLARE_CACHE_EMAIL'),

// Generate global api key https://dash.cloudflare.com/profile/api-tokens
'api_key' => env('CLOUDFLARE_CACHE_KEY'),

// zone_id of your site on cloudflare dashboard
'identifier' => env('CLOUDFLARE_CACHE_IDENTIFIER'),

'default_cache_ttl' => env('CLOUDFLARE_DEFAULT_CACHE_TTL'),
Expand Down

0 comments on commit ffba01c

Please sign in to comment.