압축을 사용하여 CSS 파일을 포함하는 공용 PHP 파일을 만드는 CSS 파일을 gzip하는 방법에 대한 자습서가 있습니다. 문제는 그것이 내 CSS 파일을 캐시 얻을 수 없다는 것입니다. 참조 용으로 파이어 버그를 사용하고 있으며 실제로 동일한 코드를 사용하여 일부 자바 스크립트를 압축하려고했지만 캐시를 잘 캐시합니다. 캐싱 gzipped css
if(extension_loaded('zlib')){ ob_start('ob_gzhandler'); } $offset = 60 * 60 * 24 * 31; header('Content-type: text/css'); header ('Cache-Control: max-age=' . $offset . ', must-revalidate'); header ('Expires: ' . gmdate ("D, d M Y H:i:s", time() + $offset) . ' GMT'); ob_start("compress"); function compress($buffer) { // Remove Comments, White Space, End ;'s $buffer = preg_replace('#/\*.*?\*/#s', '', $buffer); $buffer = preg_replace('/\s*([{}|:;,])\s+/', '$1', $buffer); $buffer = preg_replace('/\s\s+(.*)/', '$1', $buffer); $buffer = str_replace(';}', '}', $buffer); $buffer = str_replace(' {', '{', $buffer); return $buffer; } include('global.css'); if(extension_loaded('zlib')){ ob_end_flush(); }그런 다음 단순히 다른 페이지에 CSS를 문서로 내 PHP 파일을 참조하고 있습니다 : 여기 는 코드입니다. 당신이 볼 수 있듯이 믹스에 최대 나이를 추가하는 것도 실패했습니다.
여기에 응답 헤더는
Date Tue, 21 Jul 2009 19:59:19 GMT Server Apache/1.3.41 (Darwin) PHP/4.4.9 X-Powered-By PHP/4.4.9 Cache-Control max-age=2592000, must-revalidate Expires Thu, 20 Aug 2009 19:59:19 GMT Content-Encoding gzip Vary Accept-Encoding Keep-Alive timeout=15, max=93 Connection Keep-Alive Transfer-Encoding chunked Content-Type text/css
내가 부족 아무것도, 또는이 일에 대해 갈 수있는 더 나은 방법이 있나요입니까?
감사합니다,
편집 : 그것은 적절한 헤더와 함께이 문제를 해결했다하지 않은 경우 파일이 304 전송 & 변경되었는지 여부를 감지
스크립트.
아서
안녕하세요, Anthony, 나중에 변경 날짜와 행운을 함께 사용하여 제안한 것처럼 Last-Modified를 추가하려고했습니다. 이후 수정 된 ETag & If로 헤더를 보냈는데 여전히 캐시되지 않습니다 ... 답장을 보내 주셔서 감사합니다. 향후 참조 및 디버깅을 위해이 모든 내용을 명심하겠습니다. – askon
@askon : 중요한 요소는 아니지만 중요한 문제는 Cache-Control 헤더에 must-revalidate 지시문을 포함시키는 것입니다. 이를 사용하면 CSS가 항상 다시 페치됩니다. 또한 테스트시 페이지 새로 고침 (F5)을 사용하고 있습니까? 그건 아무것도 증명할 수 없으며, css와 같은 리소스는 새로 고침 컨텍스트에서 다시 채워지고 코드에 내장 된 304 메커니즘없이 리소스의 전체 가져 오기가 수행됩니다. – AnthonyWJones
죄송합니다. 좀 더 구체적이어야했습니다. 나는 여기에 내 헤더 응답의는 있어야 다시 검증 라인을 제거했다 : http://freetexthost.com/zqbddbchvz 내가 텍스트/자바 스크립트를 제외하고 동일한 스크립트를 시도 할 수있다 이해하지 못하는 어떤 문서 및 그것은 200 & 캐시를 보여줍니다. – askon