я добавил следующую строку в моей Apache httpd.conf: -Apache не посылает 304 ответа (если mod_deflate и AddOutputFilterByType включено)
AddOutputFilterByType DEFLATE text/html text/css application/javascript application/x-javascript application/json
У меня есть HTML-файл (test.html) с включение скрипта: -
<script type="text/javascript" src="/test.js"></script>
проблема заключается в том, каждый раз, когда я загружаю test.html, test.js также загружаются с состоянием HTTP: 200.
вопрос: Почему условный GET я не удовлетворены?
Если я закомментировать строку "AddOutputFilterByType" в httpd.conf, Apache посылает 304.
Если включить AddOutputFilterByType в httpd.conf, заголовок запроса: -
Host: optimize User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 GTB5 (.NET CLR 3.5.30729) FirePHP/0.2.4 Accept: */* Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://optimize/ Cookie: PHPSESSID=nbq6h0eeahkshkcbc6ctu2j2b4 If-Modified-Since: Tue, 19 May 2009 07:06:46 GMT If-None-Match: "2000000000717f-2c25a-46a3e8dcc2ad8"-gzip Cache-Control: max-age=0
И заголовок ответ: -
Date: Fri, 22 May 2009 07:03:40 GMT Server: Apache/2.2.9 (Win32) PHP/5.2.6 Last-Modified: Tue, 19 May 2009 07:06:46 GMT Etag: "2000000000717f-2c25a-46a3e8dcc2ad8"-gzip Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 52583 Keep-Alive: timeout=5, max=98 Connection: Keep-Alive Content-Type: application/javascript
UPDATE: Я заметил, если я отключить ETag, он работает правильно. Я имею в виду, что посылает 304.
FileETag None
Но я действительно хочу, чтобы ETag, как это (я знаю, что есть проблема раскрытия инода).
ли вы когда-нибудь найти обходной путь? Apache 2.4, похоже, делает то же самое, всегда отправляя 200 ответов для содержимого gzip'd – virtualeyes
Любые причины, по которым вы хотите сохранить ETags? Их нет, если вы просто статичный контент, который уже имеет дату «Last-Modified» для повторной аттестации. Разумеется, их осциллирование было бы самым легким временным решением, совместимым с RFC. –
ETags * * необходимо.Если вы когда-либо захотите заменить контент на более старую версию (например, файл javascript, который нужно было вернуть к более старой версии без ошибки, которая была введена), а при повторном использовании устаревшей даты файла, то простого сравнения даты не будет достаточно , –