ademes/acetone

此包最新版本(1.0.0)的许可证信息不可用。

Laravel5包,用于在Varnish中清除和禁止缓存项

1.0.0 2014-03-24 01:16 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:52:57 UTC


README

Laravel5包,用于在Varnish中清除、刷新和禁止缓存项

使用像varnish这样的Web加速器来加快Web应用程序的运行已经成为常见做法。这个小包旨在减轻动态数据生成网站缓存过期的难题。

安装

首先,将以下内容添加到您的composer.json

"require": {
    "jdare/acetone": "dev-master"
}

运行composer更新composer update

将其添加到Laravel的提供者列表中/app/app.php

'providers' => array(
    ...
    'JDare\Acetone\AcetoneServiceProvider',
),

使用php artisan config:publish jdare/acetone发布配置文件

配置

打开新生成的配置文件app/config/packages/jdare/acetone/config.php

可配置的选项有

  • 服务器地址
  • 强制异常
  • 禁止URL头

每个选项的文档都可在文件内部找到。

使用方法

请注意:所有这些函数都假设有一些标准的VCL设置用于清除/刷新/禁止。请查看文档文件夹以了解Varnish应该如何解释这些请求。

有关清除、刷新和禁止之间的差异,请参阅Varnish文档

##清除和刷新

function someAction()
{
    //update some information in a template or database
    
    Acetone::purge("/post/my-updated-post"); //Removed old version from Varnish
    
    //Alternatively use Acetone::refresh("/post/my-updated-post") if it suits your caching needs better.
}

当您需要使缓存无效时,您可以为Acetone函数提供一个要删除的URL作为参数。以下是一些示例用法

清除和刷新都接受URL数组,但是请注意,每个URL都需要对varnish进行单独的请求。这可能会导致大量开销,并大大增加响应时间。

为了更好地使大量URL无效,请使用Ban或BanMany。

如果需要,Ban将与清除和刷新以相同的方式工作,但是它还可以接受一个可选参数,使其匹配正则表达式字符串而不是URL。

function someAction()
{
    //update some information in a template or database
    
    Acetone::ban("^/post", true); //will remove any URL's matching "/post(.*)"
}

有一个名为"banMany"的辅助函数可用于大量禁止,例如

Acetone::banMany("/post"); //will ban any URL starting with /post

由于Varnish的匹配模式,ban和banMany是删除大量URL的更有效的方法,而不必为每个URL发出单个请求。

常见问题解答

清除返回404异常。

客户端错误响应 [状态码] 404 [原因短语] 不在缓存 [url] *URL*

如果您的VCL设置在清除项不在缓存时抛出404,Guzzle将抛出异常。这些异常只会发生在本地,并在生产环境中自动抑制。但是,您可以通过将config.php中的force_exceptions设置为false来永久禁用它们。