yediyuz/laravel-cloudflare-cache

laravel-cloudflare-cache

v1.2.0 2024-03-14 21:58 UTC

README

Laravel Cloudflare Cache

Test Status Latest Release License

使用此包可以处理数百万个请求。此包为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 rulecache 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)。请参阅 许可文件 了解更多信息。