tsaiyihua/laravel-pagecache

Laravel页面缓存

2.0.7 2024-03-15 03:26 UTC

This package is auto-updated.

Last update: 2024-09-15 04:37:59 UTC


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。