간단한 PHP 코드 (zend 프레임 워크)를 사용하여 jpg 이미지의 크기를 즉시 조정합니다.동적 크기 조정 이미지 캐시
문제는 항상 HTTP 200 상태로 끝나며 대신 304가 있어야 브라우저가 이미지를 캐시 할 수 있습니다.
나는 아파치 헤더를 얻을 어차피, function_exists('apache_request_headers')
은 거짓이며, 서버 변수에 나는
$lastModified = filemtime($path);
$etag = md5_file($path);
$this->getResponse()->setHeader('Content-type', 'image/jpeg');
$this->getResponse()->setHeader('Cache-Control', 'public');
$this->getResponse()->setHeader('Last-Modified', gmdate('D, d M Y H:i:s', $lastModified) . ' GMT');
$this->getResponse()->setHeader('Cache-Control', 'max-age=86400, must-revalidate');
$this->getResponse()->setHeader('Expires', gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT');
$this->getResponse()->setHeader('ETag', $etag);
을 보내고있다에만
'HTTP_ACCEPT' => 'image/png,image/*;q=0.8,*/*;q=0.5',
'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'HTTP_ACCEPT_ENCODING' => 'gzip,deflate',
'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5',
'HTTP_CACHE_CONTROL' => 'max-age=0',
'HTTP_CONNECTION' => 'keep-alive',
'HTTP_COOKIE' => '***',
'HTTP_HOST' => 'automobi.li',
'HTTP_KEEP_ALIVE' => '300',
'HTTP_REFERER' => 'http://automobi.li/oglas/Opel+Astra/2',
'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 FirePHP/0.4',
을하고 난 HTTP_IF_MODIFIED_SINCE 또는 서버 변수 그래서에서 STH 유사한 예상 할 수있다
if ($this->getRequest()->getHeader('IF_MODIFIED_SINCE') == $lastModified) {
$this->getResponse()->setHttpResponseCode(304);
} else {
$w = (int) $this->_getParam('w');
$h = (int) $this->_getParam('h');
$image->resize($path, $w, $h);
}
어떤 생각?
감사합니다 detaiils 걱정. $ _SERVER 변수를 보면, IF_MODIFIED_SINCE가 설정되어 있지 않다는 것을 알 수 있습니다. 이미 작성 했으므로 apache_request_headers 함수가 정의되지 않았으며 이것이 주된 문제입니다.이 데이터가 없습니다! 그래서 해결책을 찾고, 그것을 결정하는 방법. – auto
'$ _SERVER [ 'IF_MODIFIED_SINCE']'가 설정되어 있지 않으면, 클라이언트는 * If-Modified-Since * 헤더 필드를 전송하지 않았으므로이를 사용하여 클라이언트의 표현이 여전히 신선한지를 판별 할 수 없습니다. – Gumbo
대신 사용할 것은 무엇입니까? 클라이언트 캐시를 결정하는 방법이 있어야합니다. – auto