label-li/laravel-page-cache

Laravel PHP 静态页面缓存

1.1.7 2021-08-15 15:00 UTC

This package is auto-updated.

Last update: 2024-09-17 10:06:57 UTC


README

Latest Stable Version License

本包允许您轻松地将响应缓存为磁盘上的静态文件,以实现闪电般的页面加载。

本包可以将静态PHP页面缓存到本地磁盘,以提供快速的页面加载。

简介

如果有很多访客,加上页面加载包含大量逻辑和从数据库中加载大量内容,这将非常耗费资源。页面缓存可以减少加载。

安装

  1. 使用 composer 安装包
composer require label-li/laravel-page-cache
  1. 将配置发布到 config/pagecache.config
php artisan vendor:publish --provider="LabelLi\LaravelPageCache\PageCacheServiceProvider"

中间件

如果您想在中间件 web 中缓存所有路由,即所有HTTP流量

  1. 打开 app/Http/Kernel.php
  2. \LabelLi\LaravelPageCache\Middleware\CacheResponse::class, 作为新行添加到 web 中间件组
protected $middlewareGroups = [
    'web' => [
        \LabelLi\LaravelPageCache\Middleware\CacheResponse::class,
        ...
    ],
];

如果您想缓存特定的路由 page-cache

  1. 打开 app/Http/Kernel.php
  2. 'page-cache' => \LabelLi\LaravelPageCache\Middleware\CacheResponse::class, 作为新行添加到 $routeMiddleware
protected $routeMiddleware = [
    'page-cache' => \LabelLi\LaravelPageCache\Middleware\CacheResponse::class,
    ...
];

配置

config/pagecache.php 中的值更改为您想要的值

'CacheTime' => 3600, // In seconds
'CachePath' => 'pagecache', // In storage

使用方法

使用中间件

如果您选择缓存特定的路由,例如 page-cache,请按以下方式使用 page-cache 中间件

Route::middleware('page-cache')->get('/page', 'PageController@show');

/page 将被缓存到 storage/**$CachePath** 目录下的文件中。

清除缓存

缓存将在 config/pagecache.php 中设置的 CacheTime 时清除。默认为 3600 秒。

如果您想手动清除,请运行以下命令

php artisan PageCache:clear

您可以选择向命令传递URL别名,仅删除特定页面的缓存

php artisan PageCache:clear {slug}

要清除给定路径下的所有内容,请使用 --recursive 标志

php artisan PageCache:clear {slug} --recursive

备注

如果控制台功能不起作用,很可能是缓存文件夹的权限问题。请使用 ls -la 检查权限。

致谢

感谢 Joseph Silber。直接在中间件中运行缓存功能的想法来自他的 。他的包非常好,但我有不同的使用方式。因此,我编写了另一个页面缓存包来实现我的使用。