Nginx готовит W/
на etag, если включен gzip. Это означает, что это слабый этап.
Можно ли проверять наличие сильных или слабых etags с помощью php substr()
— или я что-то здесь упускаю ….. есть ли лучший способ узнать, обслуживает ли 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();
}
Задача ещё не решена.
Других решений пока нет …