Package

Yediyuz Laravel Cloudflare Cache

laravel-cloudflare-cache

Package

yediyuz/laravel-cloudflare-cache

View on GitHub →
Package Image

Laravel Cloudflare Cache

Test Status Latest Release License

You can serve millions of requests with this package. This package provides cacheable routes for Cloudflare. Thanks to Cloudflare, your static pages are served efficiently, reducing the load on your servers if they are cached for the TTL (Time to Live) duration. You can purge the cache whenever you need with this package.

Installation

You can install the package via composer:

composer require yediyuz/laravel-cloudflare-cache

You can publish the config file with:

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

Add environment variables to .env file

CLOUDFLARE_CACHE_EMAIL=info@example.com #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

Add Rule on Cloudflare

To active caching on static pages, you need to add page rule OR cache rule on Cloudflare.

For page rule:

  • If the URL matches: www.example.com/*
  • Setting: Cache Level
  • Value: Cache Everything

For the cache rule:

  • Field: hostname
  • Operator: equals
  • Value: example.com
  • Then: Eligible for cache

https://developers.cloudflare.com/cache/how-to/cache-rules/create-dashboard/

Usage

Define routes to cache

You can use cache groups for your static contents.

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.

Route::cache(tags: ['tag1', 'tag2'], ttl: 600)->group(function () {
Route::get('/content_with_tags', function () {
return 'content';
});
});
 
Route::cache(tags: ['staticPages'])->group(function () {
//
});

[!WARNING]
Be careful caching your routes! Do not cache your dynamic pages such as admin panel or form based pages!

Clear Cache

Purges everything

https://developers.cloudflare.com/cache/how-to/purge-cache/purge-everything/

CloudflareCache::purgeEverything()
Purges by urls

https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-single-file/

CloudflareCache::purgeByUrls([
'https://example.com/hello',
])
Purges by prefixes (Enterprise only)

https://developers.cloudflare.com/cache/how-to/purge-cache/purge_by_prefix/

CloudflareCache::purgeByPrefixes([
'www.example.com/foo',
])
Purges by tags (Enterprise only)

https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-tags/

CloudflareCache::purgeByTags([
'staticPages',
])
Purges by hostname (Enterprise only)

https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-hostname/

CloudflareCache::purgeByHosts([
'www.example.com',
'images.example.com',
])

Post update example to clear cache

<?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

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you've found a bug regarding security please mail security@yediyuz.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Yediyuz Laravel Cloudflare Cache Related Articles

Cache Routes with Cloudflare in Laravel image

Cache Routes with Cloudflare in Laravel

Read article
Speeding Up Laravel News With Cloudflare image

Speeding Up Laravel News With Cloudflare

Read article
Fast Laravel Course Launch image

Fast Laravel Course Launch

Read article
Separate your Cloudflare page cache with a middleware group image

Separate your Cloudflare page cache with a middleware group

Read article
Import Laravel Vapor DNS to Cloudflare image

Import Laravel Vapor DNS to Cloudflare

Read article
Welcome to the new Laravel News image

Welcome to the new Laravel News

Read article
PhpStorm logo

PhpStorm

The go-to PHP IDE with extensive out-of-the-box support for Laravel and its ecosystem.

PhpStorm
Pushsilver logo

Pushsilver

Pushsilver is simple invoicing for freelancers and small studios — send polished invoices, automate reminders, and get paid on time without the bloat.

Pushsilver
Acquaint Softtech logo

Acquaint Softtech

Acquaint Softtech offers AI-ready Laravel developers who onboard in 48 hours at $3000/Month with no lengthy sales process and a 100 percent money-back guarantee.

Acquaint Softtech
No Compromises logo

No Compromises

Joel and Aaron, the two seasoned devs from the No Compromises podcast, are now available to hire for your Laravel project. ⬧ Flat rate of $9500/mo. ⬧ No lengthy sales process. ⬧ No contracts. ⬧ 100% money back guarantee.

No Compromises
Shift logo

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift
Kirschbaum logo

Kirschbaum

Providing innovation and stability to ensure your web application succeeds.

Kirschbaum