Как предотвратить кэширование моего файла Javascript? [дубликат]
этот вопрос уже есть ответ здесь:
Как заставить браузер перезагрузить кэшированные файлы CSS / JS?
47 ответов
У меня есть простой HTML:
<html>
<body>
<head>
<meta charset="utf-8">
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
<script src="test.js"></script>
</body>
</html>
в тесте.js я изменил функцию Javascript, но мой браузер кэширует этот файл. Как отключить кэш для скрипта src?
Update: как добавить случайную скрипт с использованием javascript ?
5 ответов:
добавить случайную строку запроса к
srcвы можете сделать это вручную, увеличивая строку запроса каждый раз, когда вы вносите изменения:
<script src="test.js?version=1"></script>или если вы используете язык на стороне сервера, вы можете автоматически создать это:
ASP.NET:
<script src="test.js?rndstr=<%= getRandomStr() %>"></script>более подробную информацию о кэш-перебора можно найти здесь:
https://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/
<script src="test.js?random=<?php echo uniqid(); ?>"></script>изменить: или вы можете использовать время изменения файла, чтобы он был кэширован на клиенте.
<script src="test.js?random=<?php echo filemtime('test.js'); ?>"></script>
настройка вашего веб-сервера для отправки HTTP-заголовков управления кэшированием для скрипта.
поддельные заголовки в HTML-документах:
- не так хорошо поддерживаются, как реальные заголовки HTTP
- применить к HTML-документу, а не к ресурсам, на которые он ссылается
вы можете добавить строку запроса в свой src и изменить ее только тогда, когда вы выпустите обновленную версию:
<script src="test.js?v=1"></script>таким образом браузер будет использовать кэшированную версию до тех пор, пока не будет указана новая версия (v=2, v=3...)
вы можете добавить случайную строку (или строку datetime) в качестве строки запроса к url-адресу, который указывает на ваш скрипт. Вот так:
<script type="text/javascript" src="test.js?q=123"></script>каждый раз, когда вы обновляете страницу, вам нужно убедиться, что значение 'q' изменяется.
Comments