Я заметил, что некоторые браузеры (в частности, Firefox и Opera) очень усердно используют кэшированные копии файлов .css и .js даже между сеансами браузера. Это приводит к проблеме при обновлении одного из этих файлов, но браузер пользователя продолжает использовать кэшированную копию.
Вопрос в том, что является самым элегантным способом заставить браузер пользователя перезагрузить файл, когда он изменился?
В идеале решение не должно заставлять браузер перезагружать файл при каждом посещении страницы. Я опубликую свое собственное решение в качестве ответа, но мне любопытно, найдется ли у кого-нибудь лучшее решение, и я позволю вашим голосам решать.
Обновить :
После некоторого обсуждения здесь я нашел предложение Джона Милликина и da5id полезным. Оказывается, есть термин для этого: автоматическое управление версиями .
Ниже я разместил новый ответ, который представляет собой сочетание моего первоначального решения и предложения Джона.
Другая идея, предложенная SCdF , заключается в добавлении в файл фиктивной строки запроса. (Некоторый код Python для автоматического использования метки времени в качестве фиктивной строки запроса был представлен пи .). Тем не менее, существует некоторое обсуждение относительно того, будет ли браузер кэшировать файл со строкой запроса. (Помните, мы хотим, чтобы браузер кэшировал файл и использовал его при будущих посещениях. Мы хотим, чтобы он снова извлекал файл только после его изменения.)
Поскольку не ясно, что происходит с фиктивной строкой запроса, я не принимаю этот ответ.
iframe.contentWindow.location.reload(true)
. См. Метод (4) stackoverflow.com/a/22429796/999120 - это касается изображений, но то же самое относится.
ExpiresActive On ExpiresDefault "modification"
.