在我們的網站若資料未變更,我們會希望告訴請求資源的使用者,本資源未修改(304 Not Modified),所以不用重複讀取資料,這樣可以節省我們傳輸資料頻寬。
我可以用 Middleware 來達到 ETag 的效果
App\Http\Middleware\ETagMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
class ETagMiddleware {
/**
* Implement Etag support
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// Get response
$response = $next($request);
// 如果是 get request
if ($request->isMethod('get')) {
// 產生回應內容的 etag
$etag = md5($response->getContent());
$requestEtag = str_replace('"', '', $request->getETags());
// 檢查 etag 是否變更
if($requestEtag AND ($requestEtag[0] == $etag OR $requestEtag[0] == 'W/'.$etag)) {
// 若 etag 相同,設定表頭為資料未修改
$response->setNotModified();
}
// 設定 etag
$response->setEtag($etag);
}
// 傳送回應
return $response;
}
}
app/Http/Kernel.php
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\ETagMiddleware::class,
],
];
這樣我們就完成 Etag Middleware 的設定了!
KeJyun 最新新書推薦
- Laravel 5 for beginner 新手道場:優雅運用框架快速開發 PHP 網站
- Laravel框架开发详解:从零基础到运用框架快速开发PHP网站
Laravel 是 PHP 的框架(Framework),提供了很多開發網站或 API 所需的工具及環境,經過簡單的設定就可以完成資料的處理及顯示,使開發者可以很優雅且快速的開發出各個不同的產品。本書適合有 PHP 基礎的人,但不知道要怎麼選擇框架,或者不用框架的人也能夠明白它的好處。 雖然 WordPress 也能夠架站,但如果有客製化需求,要開發各式各樣的網站,或提供 App 使用的 API,如此一來你只能選擇用框架,而 Laravel 是目前最受歡迎的。 本書將解說為什麼要使用框架,以及理解框架的優缺點後,要怎麼選擇框架,並用框架快速建構一個網站。除非必要,否則書中會避免專業技術用語,盡量使用最生活化易懂的例子及語氣,讓大家更容易進入 Laravel 的世界。 |
|
購書連結 |
|
購書連結 |