ademes / acetone
Laravel5包,用于在Varnish中清除和禁止缓存项
Requires
- php: >=5.3.0
- guzzle/guzzle: 3.7.*
- illuminate/support: 4.x
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
来永久禁用它们。