Например, браузер при первой загрузке закэшировал файлы CSS и JS. Позже я изменил содержимое этих файлов и загрузил их на сервер. Как указать браузеру, что файлы были обновлены, чтобы он перегрузил их и обработал?
Можно обновить страницу с помощью клавиш Ctrl+F5, однако не будем же мы вешать объявления на сайте, чтобы все пользователи обновляли страницу указанным способом.
Ответ
Традиционно к URL файла, на который есть ссылка, добавляется какое-нибудь уникальное значение в query, например, script.js?1337. Формат запроса значения не имеет, так как веб-серверы игнорируют его для файлов.
Надо отметить, что в большинстве случаев это избыточно. Протокол HTTP предоставляет множество возможностей по настройке кэширования. Обычно запрос на статический файл уходит всегда, но при этом клиент (браузер то есть) может сообщить, что файл уже закэширован, и указать версию (дату, метку). В случае, если на сервере файл не обновился, сервер отдаст пустой ответ, говоря клиенту пользоваться кэшированной версией. Если файл обновился, то сервер отошлёт новый файл.
К сожалению, есть всякие глупые кэширующие прокси, криво настроенные браузеры и прочий шибко умный софт, который мешает нормальному функционированию HTTP согласно стандарту. Поэтому такие костыли и необходимы.
Комментариев нет:
Отправить комментарий