responce на запрос HTTP DELETE возвращает данные, которые not modified.
10.3.5 304 Not Modified
If the client has performed a conditional GET request and access is allowed, but the document has not been modified, the server SHOULD respond with this status code. The 304 response MUST NOT contain a message-body, and thus is always terminated by the first empty line after the header fields.
The response MUST include the following header fields:
— Date, unless its omission is required by section 14.18.1
If a clockless origin server obeys these rules, and proxies and clients add their own Date to any response received without one (as already specified by [RFC 2068], section 14.19), caches will operate correctly.
— ETag and/or Content-Location, if the header would have been sent
in a 200 response to the same request
— Expires, Cache-Control, and/or Vary, if the field-value might
differ from that sent in any previous response for the same
variant
If the conditional GET used a strong cache validator (see section 13.3.3), the response SHOULD NOT include other entity-headers. Otherwise (i.e., the conditional GET used a weak validator), the response MUST NOT include other entity-headers; this prevents inconsistencies between cached entity-bodies and updated headers.
If a 304 response indicates an entity not currently cached, then the cache MUST disregard the response and repeat the request without the conditional.
If a cache uses a received 304 response to update a cache entry, the cache MUST update the entry to reflect any new field values given in the response.
Т.о. делаем простое предположение: application-server вернул 200, веб сервер вернул 304, хром увидел 304 и закешировал
Логов веб сервера в тикете не видно, какой веб сервер и какие настройки не понятно.
Я не о том, вы говорите, что у вас ничего не повторяется. Для чистоты эксперимента надо было max-age оставить 3600, может тогда хром повел бы себя по-другому.
1. наличие или отсутствие кэша не зависит от срока жизни кеша
2. мне не нужен max-age, кеш или есть или его нет, средства веб сервера мне для этого не нужны
3. зачем пользоваться max-age? max-age на самом деле не знает когда точно объект является expired.
Я не понимаю о чём ваш комментарий. Я лишь повторил то, что есть в тикете.
Если вы считаете, что информация в тикете некорректная — то написать туда «вы ошибаетесь, всё работает так, как ожидается» будет эффективнее, чем сюда.
Вы спросили «на какой запрос?», я дал вам исчерпывающий ответ, с экспериментом.
Они там и так знают, что эксперимент проведен с нарушениями. Я сам несколько раз выдел в коде php-разработчикв псевдо аттрибуты типа "_" => 9734985734957, для того чтобы Apache не кешировал запросы. Это трудности среды разработки, и к веб браузеру они не имеют никакого отношения.
Считайте, что это ответ на пост — «все работает так как ожидается»
А служба тех поддержки chrome боле меня осведомлена в попросах неожиданного поведения тех или иных сред разработки.
Мда. Для разработчиков это достаточно большая головная боль, когда были внесены изменения в js и css файлы а хром после многократных F5 отказывается изменения признавать.
В какой урл? Страницы открываемой дополнительный get параметр? Смысла тут нет, хром все закешировал. Скрипта? Это маразм, если ради каждой правки нужно будет править имя файла, а потом еще кучу мест его подключения. Речь, как правило, идет не о глобальный правках, а о правке пары строк в css. Вы что, заказчику вместо складных main.css, отдадите main-3.05.98.2004.css?
Т. е. из-за хрома делать надстройку на сервере, чтобы такие адреса обрабатывались? А если это виртуальный хостинг клиента, где нужно делать мелкие правки?
Да и от необходимости править шаблоны, где прописаны пути это не избавляет.
Чем устраивать такое, проче отказаться от хрома при разработке и проверять сайт под FF, например, а в хроме только на финальной стадии.
ps: а такая проблема реально существует? Просто я как-то не сталкивался с излишне агрессивным кэшем хрома (при условии, что вебсервер корректные заголовки отдаёт)
Да, существует проблема. Программист сидит, отлаживает верстку, которая порезана на шаблон CMS. Что-то не так, он просит верстальщика поправить. Тот по фтп правит css, js, буквально пару строк.
А вот программисту, чтобы увидеть изменения еще как нужно извернуться, чтобы увидеть изменения. html то по F5 сбрасывается кеш. А вот все подключаемые файлы — нет. Он даже не запрашивает картинки, css и js и чтобы их сбросить нужно либо сбросить кеш совсем, либо открыть каждый файл напрямую в браузере и там нажать F5.
Поэтому разработчику не удобно пользоваться хромом.
> А если это виртуальный хостинг клиента, где нужно делать мелкие правки?
Пардон за капитанство, но в продакшне вообще нельзя никаких правок вносить. А в случае с разработкой локально — можно билдить и перезаливать изменения.
> Да и от необходимости править шаблоны, где прописаны пути это не избавляет.
Это снижение можно измерить? Очевидно, что немного ресурсов на него всё таки тратится, но действительно ли на фронтах всё всегда упирается в CPU и именно из-за модреврайта?
При разработке сайта вообще могут не использоваться никакие билд скрипты, потому что они зачастую просто не нужны. Тем более при разработке на CMS. Верстальщик по фтп подправил строчку в css, и билд скрипт должен работать? Притом тут речь не о том, что сделали — отдали, а о том, что программист сидит, правит js, вносит изменения и смотрит результат, тестит, отлаживает, а у него они кешируются… Неужели на каждую правку новый билд создается? (а программист может до сотни раз скрипт пересохранять в ходе тестирования)
Добавляете в шаблон вместо прямой ссылки на css функцию, e.g.:
add_css(«css_file_name»);
Функция преобразует имя файла в /style/css/css_file_name.css?timestamp
timestamp — время последнего изменения файла.
Это не хром виноват, это ваш веб сервер считает эти данные идентичными. Если ваше приложение отдает эти файлы как идентичные веб серверу, то следует разборки устраивать между веб сервером и сервером приложений. Хром сдесь вообще не при делах.
Думаю если сервер явно не указывает поведение cache-control броузер волен кешировать как ему удобнее.
Я во время разработки прописываю must-revalidate и хром отлично подгружает все изменения с сервера.
Chrome кэширует даже запросы HTTP DELETE