[扩展推荐] 三个 Laravel 的 HTTP 缓存扩展包推荐

file

我们写过 Joseph Silber 的  Laravel页面缓存  包,这个包为 Laravel 提供了静态 HTTP 响应缓存。在 Laravel 中还有其它一些针对静态 HTTP 响应缓存的开源包, 所以我们认为我们应该整理一个关于 HTTP 缓存包的列表,供大家查看。这些 HTTP 缓存包都有独特的功能,使得它们在处理一些相似功能时会有不同的表现,所以需要根据需求来选择扩展。

barryvdh/laravel-httpcache

Barry vd. Heuvel 的 barryvdh/laravel-httpcache 扩展包 --- 最初在2013年为 Laravel 4.1 而生 --- 现在 Laravel 5 也适用。

该包使用 barryvdh/laravel-stack-middleware 与 Laravel 5 一起使用 StackPHP 中间件 ,从而允许你的 Laravel 应用使用 HTTPCache

使用这个包,你可以为响应页面设置一个生命周期 TTL 或者 最大缓存时间。

Route::get('my-page', function(){
   return Response::make('Hello!')->setTtl(60); // 缓存 1 分钟
});

你也可以使用路由中间件:

protected $routeMiddleware = [
    // ...
    'ttl' => \Barryvdh\HttpCache\Middleware\SetTtl::class,
];

Route::get('my-page', function(){
   return 'Hello'
})->middleware('ttl:60'); // 缓存 1 分钟

点击 barryvdh/laravel-httpcache GitHub repo 查看更多信息。

spatie/laravel-responsecache

Spatie的  laravel-responsecache  扩展包缓存全部响应以加速你的 Laravel 应用。我喜欢这个扩展包,它利用了现有的定义在 config/cache.php  文件 的缓存驱动(比如 redis, file, memcached )  。

你可以使用中间件定义一个指定缓存时间的路由群组:

Route::group(function() {
   Route::get('/another-special-snowflake', 'AnotherSnowflakeController@index');

   Route::get('/yet-another-special-snowflake', 'YetAnotherSnowflakeController@index');
})->middleware('cacheResponse:10');

这个扩展包另一个实用的功能是可以在程序中清除整个缓存或特定的URIs:

ResponseCache::clear();

// 清除几个 URIs
ResponseCache::forget(['/some-uri', '/other-uri']);

或者使用artisan命令

php artisan responsecache:clear

该扩展包还允许你提供一个自定义的缓存配置文件,它必须实现给定的 CacheProfile 接口。定义一个自定义的缓存配置文件可以让你精确的控制哪些请求被缓存以及缓存时间长短。

silber/page-cache

Joseph Silber 的 Laravel Page Cache 扩展包是另一个 HTTP 缓存包,是静态网站建设者极好的选择。 你可以从静态网站获得很好的性能,没有额外的生成步骤,也不会牺牲通过 PHP 实现完全动态功能的能力。

这个包的工作原理是通过路由中的中间件来生成静态的HTML文件。和串行服务器配合工作时,像 Nginx 之类的,缓存响应不会触及到应用服务器:

对于真正的静态页面,真的没有理由必须通过 PHP 来展示静态页面。 直接从磁盘提供HTML页面读取速度更快,更节省服务器开销。

解决方案? 整页缓存。

使用这个包里的中间件,对自任何指定的请求,你都可以有选择的进行静态缓存。 之后访问的这个页面将直接返回静态的 HTML 页面!

无论你想缓存你所有的路由还是永不变更的几个选定的路由,这个包提供了一个完美的方法来减轻你的 PHP 应用的请求压力,并且让 Nginx 能够给静态文件提供闪电般快速的请求。

其它?

你在 Laravel 中有用任何其它的包来做 HTTP 缓存么?在 Twitter @laravelnews 上告诉我们!

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/http-cache-pack...

译文地址:https://learnku.com/laravel/t/10988/thre...

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

laravel-responsecache 这个怎么返回304状态码么?

5年前 评论

很难受现在才看到这个文章!!!

7个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!