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

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 上告诉我们!


Practice makes perfect.

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

译文地址:https://laravel-china.org/topics/10988/t...

本帖已被设为精华帖!
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1

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

1周前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!