darkperis/dpadn-laravel

Laravel 的 ADN 缓存实现

1.0.5 2024-01-26 13:48 UTC

This package is auto-updated.

Last update: 2024-09-26 15:11:33 UTC


README

此包允许您使用 ADNcache 与 Laravel 一起使用。

它提供了一个外观

  • ADNCache 外观用于处理清除

安装

使用 composer 安装此包。

composer require darkperis/dpadn-laravel

Laravel 使用自动发现,因此您不需要对应用程序进行任何更改,两个中间件和外观将从一开始就可用。

Laravel >=5.1 和 <=5.4 的步骤

该包也可以用于 Laravel 5.1 到 5.4,但由于缺乏自动发现,需要执行一些额外的步骤。

config/app.php 中,您必须在 aliases 中添加以下代码

'aliases' => [
    ...
    'ADNCache'   => Darkpony\ADNCache\ADNCache::class,
],

adncache.php 复制到 config/

将包 config/adncache.php 文件复制到您的 config/ 目录。

重要:不要在 config/app.phpproviders 下添加 ServiceProvider。

Laravel 5.5 及以上版本的步骤

您应该发布包配置,这将允许您设置 Cache-Control 标头的默认值

php artisan vendor:publish --provider="Darkpony\ADNCache\ADNCacheServiceProvider"

用法

该包包含两个功能:为 adncache 设置缓存控制头和清除。

缓存控制

您可以在 config/adncache.php 文件中配置默认值,在此您可以为 Cache-Control 响应头设置最大生存时间(default_ttl)、缓存性(default_cacheability)如公共、私有或无缓存,或者启用 esi(esi)。

如果 default_ttl 设置为 0,则不会返回 Cache-Control 响应头。

您可以在 .env 文件中控制配置设置,如下所示

  • ADNCACHE_API_KEY - 在 Edgeport 平台上指定您的服务 API 令牌
  • ADNCACHE_ENDPOINT - 接受端点
  • ADNCACHE_ESI_ENABLED - 接受 truefalse 以确定是否全局启用 ESI;默认 false
  • ADNCACHE_DEFAULT_TTL - 接受一个整数,此值以秒为单位;默认:0
  • ADNCACHE_DEFAULT_CACHEABILITY - 接受一个字符串,您可以使用诸如 privateno-cachepublicno-vary 等值;默认:no-cache
  • ADNCACHE_GUEST_ONLY - 接受 truefalse 以决定是否只为访客启用缓存;默认 false

您可以使用中间件设置 adncache 的缓存控制头,因此我们可以在路由中执行类似以下操作

Route::get('/', function() {
    return view('frontpage');
})->middleware('cache.headers:public;max_age=2628000;etag');

清除

如果您有一个控制例如博客的管理界面,当您发布新文章时,您可能想要清除博客的前页,以便文章出现在概览中。

您可以在控制器中这样做

<?php

namespace App\Http\Controllers;

use ADNCache;

class BlogController extends BaseController
{
    // Your article logic here

    ADNCache::purge('/');
}

您也可以通过这样做清除一切

ADNCache::purge('*');
// or
ADNCache::purgeAll();

可以通过逗号分隔的列表使用一个或多个 URI 进行清除

ADNCache::purge('/blog,/about-us,/');
// or
ADNCache::purgeItems(['/blog', '/about-us', '/']);

Laravel 身份验证

如果您使用 Laravel 的身份验证来处理访客和已登录用户,您可能还希望根据此对人员的缓存进行分离。

您可以在 .htaccess 文件中通过使用缓存变化在授权 cookie 上执行此操作

RewriteEngine On
RewriteRule .* - [E=Cache-Vary:Authorization]

注意:在上述示例中,我们使用 Authorization,这可能会根据您的设置有所不同,因此必须相应地进行更改。