Lex*_*918 2 php etag laravel lumen
我有两条路线:
$app->get('time1', function(){
return response('time1 = '.time());
});
$app->get('time2', function(){
return response()->json(['time2' => time()]);
});
Run Code Online (Sandbox Code Playgroud)
以及一个全局后中间件:
public function handle($request, Closure $next)
{
$response = $next($request);
$response->setEtag(md5($response->getContent()));
return $response;
}
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,我有这个 HTTP 标头:
ETag:"8114ac3b0aad6e54345ee00f78959316"
Run Code Online (Sandbox Code Playgroud)
但不是在第二个。为什么?如何在第二种情况下添加相同的标题?
您在第二个响应中没有看到ETag的原因是,由于返回的响应已被服务器压缩,因此该标头已被您的 Web 服务器剥离- 请参阅Content-Encoding: gzip标头。这背后的原因是,鉴于gzip 具有不同的压缩级别,相同的资源不能逐字节相同。
您可以禁用gzip 压缩(检查您的 Apache 配置,尤其是 mod_deflate 模块的配置)或不使用ETag。