ziffmedia / laravel-cloudflare
一个Laravel Nova工具。
v1.0.0-beta.2
2024-06-10 22:19 UTC
Requires
- php: ^8.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- laravel/nova: ^4.0
- laravel/pint: ^1.16
- dev-master
- v1.0.0-beta.2
- v1.0.0-beta.1
- v0.3.0
- v0.2.0
- v0.1.0
- dev-nova4-support
- dev-develop-1.x
- dev-dependabot/npm_and_yarn/browserify-sign-4.2.2
- dev-dependabot/npm_and_yarn/babel/traverse-7.23.2
- dev-dependabot/npm_and_yarn/postcss-and-laravel-mix-and-resolve-url-loader-8.4.31
- dev-dependabot/npm_and_yarn/ansi-html-and-webpack-dev-server--removed
- dev-dependabot/npm_and_yarn/is-svg-and-postcss-svgo--removed
- dev-dependabot/npm_and_yarn/color-string-1.9.1
- dev-dependabot/npm_and_yarn/minimist-1.2.8
- dev-dependabot/npm_and_yarn/json5-1.0.2
- dev-dependabot/npm_and_yarn/express-4.18.2
- dev-dependabot/npm_and_yarn/qs-and-express-6.11.0
- dev-dependabot/npm_and_yarn/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/loader-utils-and-resolve-url-loader-1.4.2
- dev-dependabot/npm_and_yarn/eventsource-1.1.1
- dev-dependabot/npm_and_yarn/async-2.6.4
- dev-dependabot/npm_and_yarn/url-parse-1.5.10
- dev-dependabot/npm_and_yarn/follow-redirects-1.14.8
- dev-dependabot/npm_and_yarn/path-parse-1.0.7
- dev-dependabot/npm_and_yarn/ws-6.2.2
- dev-dependabot/npm_and_yarn/dns-packet-1.3.4
- dev-dependabot/npm_and_yarn/browserslist-4.16.6
- dev-dependabot/npm_and_yarn/lodash-4.17.21
This package is auto-updated.
Last update: 2024-09-12 10:33:32 UTC
README
功能
- Laravel Nova工具,用于添加缓存清除页面,以便手动批量清除特定URL。
- Laravel Nova字段,用于清除特定URL或资源的缓存标签。
- 选择将工具、字段或两者都包含在项目中。
- 选择使用URL、缓存标签头或两者来清除Cloudflare缓存。
Nova工具
Nova字段
安装
- 将包安装到您的Laravel应用程序中。
composer require ziffmedia/laravel-cloudflare
- 发布配置文件到您的应用程序。
php artisan vendor:publish --provider="ZiffMedia\LaravelCloudflare\CloudflareServiceProvider" --tag="config"
- 在.env文件中提供您的Cloudflare区域和API密钥的新配置文件。
Nova工具集成
为了在您的Nova实例中提供缓存清除工具,您必须使用NovaServiceProvider注册该工具。
// app/Providers/NovaServiceProvider.php use ZiffMedia\LaravelCloudflare\Nova\Tools\LaravelCloudflareTool; public function tools() { return [ // ..., LaravelCloudflareTool::make() ]; }
有关向工具添加权限的信息,请参阅Nova 文档。
注意:该工具仅适用于URL;如果只使用工具或URL清除,则无需设置缓存标签。
Nova字段集成
要为任何资源提供缓存清除按钮,您必须引用该字段并确保您已设置适当的清除方法(URL或缓存标签)。
// app/Nova/ use ZiffMedia\LaravelCloudflare\Nova\Fields\ClearCacheButton; public function fields(Request $request) { ClearCacheButton::make('Cloudflare Cache') ->purgeUrls( ['https://www.example.com', 'https://www.example.com/page'] ) ->purgeTags(function () { return $this->cloudflareTagsToClear(); // In order to use this method, you must setup Cache Tags (see below) }) ->hideWhenCreating() }
Cloudflare缓存-标签头集成
Cloudflare具有使用特殊缓存-标签头请求以立即清除多个页面的能力。如果您只想使用URL清除,则可以跳过此步骤。为了设置缓存-标签头,请按照以下步骤操作
- 添加Cloudflare缓存-标签中间件以自动将缓存-标签头添加到所有请求。由于Cloudflare会自动删除头信息,您可以在请求的查询字符串中使用
debug_cache_tags=1
来查看头信息的输出。
// app/Http/Kernel.php use ZiffMedia\LaravelCloudflare\Middleware\CloudflareTagHeaders; protected $middlewareGroups = [ 'web' => [ // ... CloudflareTagHeaders::class, ] ];
- 添加Cloudflare控制器关注点,告诉页面要为请求头提供哪些标签。以下是一个针对文章资源的示例实现
// app/Http/Controllers/ArticleController.php use ZiffMedia\LaravelCloudflare\Controllers\Concerns\CloudflareTaggable; class ArticleController extends Controller { use CloudflareTaggable; public function index() { // For a collection of models $articles = Article::get(); $this->addCloudflareTagsFromCollection($articles); // This will add a tag to the page for each model in the collection // For a single model $article = Article::first(); $this->addCloudflareTagFromModel($article); // This will add a tag to the page for a single model return view(...); } }
- 添加Cloudflare模型关注点,告诉头信息要使用哪个标签。此外,可以覆盖
cloudflareTagsToClear
和cloudflareTag
方法,以允许自定义标签或清除其他资源。以下是一个针对文章模型的基本示例实现
// app/Models/Article.php use ZiffMedia\LaravelCloudflare\Models\Concerns\CloudflareTaggable; class Article extends Model { use CloudflareTaggable; // ... }
配置选项
purge_enabled
:允许开启或关闭清除功能email
:用于通过Cloudflare API进行身份验证的电子邮件地址key
:用于通过Cloudflare API进行身份验证的密钥zone
:用于Cloudflare API的区域domains
:允许清除的域名数组。所有URL清除请求都将与这些域名进行验证,如果有的话。