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
Honeybadger logo

Honeybadger

Simple developer-focused application monitoring for Laravel. Error tracking, log management, uptime monitoring, status pages, and more!

Honeybadger
Tighten logo

Tighten

We help companies turn great ideas into amazing apps, products, and services.

Tighten
Get expert guidance in a few days with a Laravel code review logo

Get expert guidance in a few days with a Laravel code review

Expert code review! Get clear, practical feedback from two Laravel devs with 10+ years of experience helping teams build better apps.

Get expert guidance in a few days with a Laravel code review
DreamzTech logo

DreamzTech

Hire 6-10+ Yrs. experienced skilled Laravel Developers from DreamzTech. We ensure NDA protected, 100% quality delivery. Contact Us & Discuss Your Need.

DreamzTech
The Certification of Competence for Laravel logo

The Certification of Competence for Laravel

A community-driven, proctored assessment across 4 levels designed to validate real-world Laravel knowledge, from Junior to mastery-level Artisan. Official Vue.js, Official Nuxt, Angular, React, JS certifications also available.

The Certification of Competence for Laravel
CodeKudu logo

CodeKudu

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

CodeKudu