2014-11-18 3 views
0

Я работаю над PHP и JavaScript-приложением. Я вношу изменения в JS, обновляю Chrome и не использую самый последний скрипт. Кажется, это кеширование.Хром не останавливает кеширование скриптов, даже когда кеширование отключено

У меня есть «отключить кеширование» в Dev Tools, и я даже попробовал расширение Cache Killer, но Chrome STILL кэширует мой скрипт.

Это поведение не происходит в Safari или Firefox, без каких-либо плагинов.

Любые идеи?

+0

Вы открыли средства разработки для того, чтобы Chrome вытягивает его из кэша (на сетевой панели)? –

ответ

2

Обычно вы можете заставить браузер загружать новую копию URL-адреса, сделав его «новым», используя что-то вроде нового значения параметра в URL-адресе.

Пример:

<script type="text/javascript"> 
var script = document.createElement("script"); 
script.setAttribute("type", "text/javascript"); 
script.setAttribute("src", "yourfile.js?random=" + new Date()); 
document.getElementsByTagName("head")[0].appendChild(script); 
</script> 

Это загрузит новый экземпляр файла «yourfile.js» каждый раз, потому что мы добавляем дату и время «сейчас», который всегда будет новым.

(этот пост был написан в качестве ответа, потому что я не могу писать комментарии на данный момент)

+0

Это, в конечном счете, то, что я закончил делать (хотя я пошел с «rand()»), но мне кажется, это действительно странно. Почему Chrome использует кешированные копии, несмотря на то, что «не кешировать» не только один, но несколько фронтов? – Prefix

+0

Обратите внимание: хотя rand() является случайным, значение может быть возвращено более одного раза, что означает, что Chrome покажет старый/кешированный файл - вряд ли это произойдет. Использование datetime ('' new Date() '') всегда будет возвращать новое значение, поскольку время всегда будет проходить. Я не могу объяснить, что Chrome кэширует файлы, несмотря на то, что он не должен. Попробуйте очистить кеш и снова загрузить страницу. Всегда есть вероятность, что вы столкнулись с ошибкой. – LiveLongAndProsper

+0

Я запускаю Yosemite, который по-прежнему относительно новый, поэтому, возможно, это ошибка, связанная с текущей сборкой Chrome и Yosemite. Я не сталкивался с этой проблемой в Mavericks перед обновлением, подумал об этом. Это странно, потому что это только кажется на моем сервере на работе, и только с Chrome, а не на персональных серверах. – Prefix