Простая клиентская техника
В целом, кэширование - это хорошо. Поэтому есть несколько методов, в зависимости от того, решаете ли вы проблему для себя при разработке веб-сайта или пытаетесь контролировать кэш в производственной среде.
Обычные посетители вашего сайта не будут иметь того опыта, который вы испытываете при разработке сайта. Так как среднестатистический посетитель посещает сайт реже (может быть, только несколько раз в месяц, если вы не являетесь сетью Google или hi5), тогда он с меньшей вероятностью будет хранить ваши файлы в кэше, и этого может быть достаточно. Если вы хотите принудительно ввести новую версию в браузер, вы всегда можете добавить строку запроса к запросу и увеличить номер версии при внесении серьезных изменений:
<script src="/myJavascript.js?version=4"></script>
Это гарантирует, что каждый получит новый файл. Это работает, потому что браузер просматривает URL-адрес файла, чтобы определить, есть ли у него копия в кэше. Если ваш сервер не настроен на выполнение каких-либо действий со строкой запроса, он будет игнорироваться, но имя будет выглядеть как новый файл для браузера.
С другой стороны, если вы разрабатываете веб-сайт, вам не нужно менять номер версии каждый раз, когда вы сохраняете изменения в своей версии для разработки. Это было бы утомительно.
Поэтому, когда вы разрабатываете свой сайт, хорошим трюком будет автоматическое создание параметра строки запроса:
<!-- Development version: -->
<script>document.write('<script src="/myJavascript.js?dev=' + Math.floor(Math.random() * 100) + '"\><\/script>');</script>
Добавление строки запроса в запрос является хорошим способом создания версии ресурса, но для простого веб-сайта это может быть ненужным. И помните, кэширование - это хорошо.
Стоит также отметить, что браузер не скупится на хранение файлов в кеше. Браузеры имеют политики для такого рода вещей, и они обычно играют по правилам, изложенным в спецификации HTTP. Когда браузер делает запрос к серверу, часть ответа представляет собой заголовок EXPIRES ... дата, которая сообщает браузеру, как долго он должен храниться в кэше. В следующий раз, когда браузер встречает запрос на тот же файл, он видит, что у него есть копия в кеше, и смотрит на дату истечения срока действия, чтобы решить, следует ли его использовать.
Так что, хотите верьте, хотите нет, но на самом деле ваш сервер делает этот кеш браузера таким постоянным. Вы можете настроить параметры сервера и изменить заголовки EXPIRES, но небольшая техника, которую я написал выше, вероятно, намного проще для вас. Поскольку кэширование хорошо, обычно вы хотите установить эту дату далеко в будущее («Заголовок истекающего далекого будущего») и использовать метод, описанный выше, для принудительного изменения.
Если вас интересует дополнительная информация о HTTP или о том, как выполняются эти запросы, хорошая книга - «Высокопроизводительные веб-сайты» Стива Соудерса. Это очень хорошее введение в предмет.