Polyscope - The agent-first dev environment for Laravel

Laravel Cloudflare Cache

yediyuz/laravel-cloudflare-cache image

Laravel Cloudflare Cache stats

Downloads
42
Stars
68
Open Issues
0
Forks
0

View on GitHub →

laravel-cloudflare-cache

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.

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Yediyuz Laravel Cloudflare Cache Related Articles

Serve Markdown Versions of Your Laravel Pages to AI Agents image

Serve Markdown Versions of Your Laravel Pages to AI Agents

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
Geocoding with Cloudflare image

Geocoding with Cloudflare

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

Separate your Cloudflare page cache with a middleware group

Read article
Cloudflare Turnstile versus CSRF tokens image

Cloudflare Turnstile versus CSRF tokens

Read article
CodeKudu logo

CodeKudu

Stand-ups, Retrospectives, and 360° Feedback for the entire team. 50% off with code LARAVELNEWS.

CodeKudu
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
Securing Laravel logo

Securing Laravel

The essential security resource for Laravel devs, covering everything you need to keep your apps secure. Sign up to receive weekly security tips and monthly in depth articles, diving deep into security concepts you need to know!

Securing Laravel
Typesense Search logo

Typesense Search

Typesense is an open source, blazing-fast search engine, optimized for helping you build delightful search experiences for your sites and apps. Natively integrated with Laravel Scout.

Typesense Search
Celebian logo

Celebian

Celebian is a social media marketing agency specializing in helping their clients go viral on TikTok. Whether you're looking to reach a bigger audience or gain more Tiktok followers, likes, and views, they've got you covered.

Celebian