tsaiyihua / laravel-pagecache
Laravel页面缓存
2.0.7
2024-03-15 03:26 UTC
Requires
- ext-json: *
- ext-redis: *
- guzzlehttp/guzzle: ^7.2
- laravel/framework: ^7|^8.75.0|^9|^10|^11
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0|^9.0
- pestphp/pest: ^1.0|^2.0
README
本包主要用于整个页面的缓存内容。
如果你网页的点击率低,这个包可以帮助你解决这个问题。
基本概念
- 当访问的网页没有缓存内容时,程序内容直接执行,生成物理网页文件的执行程序将被放入队列执行。
- 当访问的网页有缓存内容时,直接读取缓存内容显示。
- 当访问的网页有缓存内容,但文件生成时间超过设置的过期时间时,直接读取缓存内容显示,然后将生成物理网页文件的执行程序放入队列执行。
Laravel支持
安装
composer require tsaiyihua/laravel-pagecache
php artisan vendor:publish --tag=pagecache
- 在config/filesystems.php中添加磁盘
'pages' => [ 'driver' => 'local', 'root' => env('PAGE_CACHE_DISK', storage_path('app/pages')), ],
- 在app/Http/kernel.php中的$routeMiddleware中添加中间件
'pageCache' => \TsaiYiHua\Cache\Http\Middleware\PageCache::class
- 创建临时文件夹,假设使用Laravel默认设置
cd {YOUR PROJECT FOLDER}
mkdir storage/app/pages
chmod 777 storage/app/pages
- 然后,将"pageCache"中间件添加到你想要缓存页面的路由中
好了,完成了。加入它。
.env变量说明
PAGE_CACHE_ENABLE=true PAGE_CACHE_ALIVE=1296000 PAGE_CACHE_URL_PATTERN=/^(http.*)\/\/([^\/]+)[\/]?([^\?]+)?\??(.*)?/ PAGE_CACHE_PARAMS=l,p PAGE_CACHE_DELAY=30 PAGE_CACHE_OWNER=nobody PAGE_CACHE_GROUP=nobody
- PAGE_CACHE_ENABLE布尔值,当此值为true时,页面缓存将生效
- PAGE_CACHE_ALIVE时间戳,页面缓存存活时间,默认为15天
- PAGE_CACHE_URL_PATTERN正则表达式,默认为常用,如果你有特殊规则,请更改此值。
- PAGE_CACHE_PARAMS需要缓存的查询字符串,以逗号分隔
- PAGE_CACHE_DISK页面缓存文件存储,如果你使用默认设置,不要在.env中设置此变量
- PAGE_CACHE_DELAY秒,页面访问后创建缓存文件
- PAGE_CACHE_OWNER页面缓存文件所有者。仅在管理缓存文件时使用
- PAGE_CACHE_GROUP页面缓存文件组。仅在管理缓存文件时使用
如果你使用云存储,请忽略PAGE_CACHE_OWNER和PAGE_CACHE_GROUP
.env中的APP_ENV
- 当APP_ENV为"production"时,请求参数"noCache"将被设置为false,以避免拖慢在线版本。
- 基于以上原因
- 我们建议你拥有超过2台服务器,在线版本的APP_ENV可以设置为"production",其中一台服务器可以设置为除"production"之外的其他名称以生成缓存文件。
- 如果你只有一台服务器,APP_ENV不能设置为production。
- 缓存生成服务器必须编辑/etc/hosts,并将域名ip添加到127.0.0.1
命令
php artisan pagecache:clear
清除所有页面缓存,如果存在权限问题,只需使用sudo执行即可。php artisan pagecache:refresh {url}
通过URL刷新页面缓存。php artisan pagecache:info {url}
通过URL获取页面缓存信息php artisan pagecache:info stat {--date= : stat date}
如果{url}是状态,它将显示统计信息,默认日期为今天,你可以使用--date=指定日期,格式为Ymd。