@mx6001

Как обойти кэширование в браузере?

Ситуация такая, в предприятии у пользователей стоит Chrome (в других браузерах не тестил), через который они пользуются моим веб-приложением. После обновления на сервере подключаемых в этом приложении файлов JS они приходят старые, т.е. они на сервере лежат уже новые(измененные) а браузер видимо закэшировал старый код и подтягивает как будто бы они не изменились, а новые файлы подтягивает. Из за этого возникают ошибки при исполнении JS.
Причем измененные файлы подтягиваются только по обновлению на F5, если например попасть на страницу приложения по ссылке, или заново запустив браузер и перейдя в приложения они не обновляются.
Вопрос в том как это можно обойти?
  • Вопрос задан
  • 2718 просмотров
Решения вопроса 1
VovanR
@VovanR
Фронт-энд Вэб-разработчик
Есть 2 способа:
1. Изменять название файла подключаемого скрипта
Например был:
<script src="scripts/libs-20150101223055.js"></script>

Стал такой:
<script src="scripts/libs-20150211093711.js"></script>


2. Проще, без переименования:
Был:
<script src="scripts/libs.js?v=1"></script>
Стал:
<script src="scripts/libs.js?v=2"></script>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
GM2mars
@GM2mars
Самый действенный и проверенный способ, это версионность js файлов. То есть выпустили новую версию веб приложения, меняем название файлов app_1.2.js
Как менять название подключаемых файлов автоматически, это уже другой вопрос, зависит от архитектуры, да и вообще нужно смотреть каждую ситуацию отдельно.

Некоторые скажут что можно менять версию через параметры app.js?v=1.2, но такая схема работает не на всех браузерах.
Ответ написан
Комментировать
@frees2
Уже собаку на этом съел. Все вышеизложенные решения не решают проблему комплексно, конечно, если вы получаете свои файлы это подходит, но не удаленных файлов ( некоторые файлы кешируются на стороне провайдера и даже гугла, к примеру лента сиэнэн проходит а лента иная нет, так работают местные всякие надзоры, в том числе и в европе восточной, цензура).
1 +array_list[i].sd+"&demon="+new Date().getTime()+"
Это лучше чем .........scripts/libs-20150211093711.js
Комплексно решается так
Меняется расширение на scripts/libs-20150211093711.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы