使用etags进行nginx http缓存

时间:2016-09-07 09:15:41

标签: php nginx http-caching

如果打开gzip,Nginx会在etag上添加W/。这意味着它是一个弱小的标签 使用substr()检查强或弱的etags是否可以 - 或者我在这里遗漏了什么.....有没有更好的方法来了解nginx是否正在提供压缩内容?

我试图检查gzip是否已通过curl_init启用到我自己的服务器,但它无效并且正在创建一个循环。

$etag = md5($request->getMatchedRoute());
if($browserEtag = $request->getHeader('If-None-Match')){
        if(substr($browserEtag, 0, 2) === 'W/'){
            $prefixEtag = 'W/';
        }else{
            $prefixEtag = '';
        }

        if($browserEtag === $prefixEtag.$etag){
            $response->setStatus('304 Not Modified');
            // only send headers and exit
            $response->headerFlush();
        }
    }else{

        $response->addHeader('ETag', $etag);
        $response->addHeader('Cache-Control', 'public, max-age=6000');
        $response->setBody(file_get_contents($somefile));
        $response->flush(); 
    }

0 个答案:

没有答案