yediyuz / laravel-cloudflare-cache
laravel-cloudflare-cache
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.8
- illuminate/contracts: ^10.10|^11.0
- illuminate/routing: ^10.10|^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.0
- laravel/framework: ^10.10|^11.0
- nunomaduro/collision: ^7.0|^8.0
- orchestra/testbench: ^8.18|^9.0
- pestphp/pest: ^2.28
- pestphp/pest-plugin-laravel: ^2.2
- phpstan/phpstan: ^1.10
- phpunit/phpcov: ^9.0.2
- spatie/laravel-ray: ^1.32
- yediyuz/dev-tools: 1.x-dev
This package is auto-updated.
Last update: 2024-09-10 09:30:50 UTC
README
Laravel Cloudflare Cache
使用此包可以处理数百万个请求。此包为Cloudflare提供可缓存的路由。感谢Cloudflare,您的静态页面可以高效地提供服务,如果缓存了TTL(生存时间)时长,可以减少服务器负载。您可以使用此包随时清除缓存。
安装
您可以通过composer安装此包
composer require yediyuz/laravel-cloudflare-cache
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="cloudflare-cache-config"
将环境变量添加到.env文件中
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
在Cloudflare上添加Rule
为了在静态页面上启用缓存,您需要在Cloudflare上添加page rule
或 cache rule
。
对于page rule
- 如果URL匹配:
www.example.com/*
- 设置:缓存级别
- 值:缓存所有内容
对于cache rule
- 字段:主机名
- 操作符:等于
- 值:
example.com
- 然后:允许缓存
https://developers.cloudflare.com/cache/how-to/cache-rules/create-dashboard/
用法
定义要缓存的路由
您可以为静态内容使用缓存组。
Route::cache()->group(function () { Route::get('/content', function () { return 'content'; }); });
您可以使用缓存标签,以便轻松清除缓存。指定自定义的TTL(以秒为单位)作为过期时间。如果您不传递TTL,它将使用配置中提供的默认TTL。
Route::cache(tags: ['tag1', 'tag2'], ttl: 600)->group(function () { Route::get('/content_with_tags', function () { return 'content'; }); }); Route::cache(tags: ['staticPages'])->group(function () { // });
警告
小心缓存您的路由!不要缓存动态页面,例如管理面板或基于表单的页面!
清除缓存
清除所有内容
https://developers.cloudflare.com/cache/how-to/purge-cache/purge-everything/
CloudflareCache::purgeEverything()
按URL清除
https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-single-file/
CloudflareCache::purgeByUrls([ 'https://example.com/hello', ])
按前缀清除(仅限企业版)
https://developers.cloudflare.com/cache/how-to/purge-cache/purge_by_prefix/
CloudflareCache::purgeByPrefixes([ 'www.example.com/foo', ])
按标签清除(仅限企业版)
https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-tags/
CloudflareCache::purgeByTags([ 'staticPages', ])
按主机名清除(仅限企业版)
https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-hostname/
CloudflareCache::purgeByHosts([ 'www.example.com', 'images.example.com', ])
更新后清除缓存的示例
<?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'); } }
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全
如果您发现有关安全性的错误,请发送邮件至 security@yediyuz.com 而不是使用问题跟踪器。
致谢
许可协议
MIT 许可协议(MIT)。请参阅 许可文件 了解更多信息。