Как предотвратить кеширование моего файла Javascript?
У меня есть простой 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>
В test.js я изменил функцию Javascript, но мой браузер кэширует этот файл. Как отключить кеш для script src?
Обновление: как добавить случайный script с помощью javascript?
Ответы
Ответ 1
Добавьте случайную строку запроса в 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/
Ответ 2
<script src="test.js?random=<?php echo uniqid(); ?>"></script>
EDIT: Или вы можете использовать время изменения файла, чтобы оно было кэшировано на клиенте.
<script src="test.js?random=<?php echo filemtime('test.js'); ?>"></script>
Ответ 3
Настройте свой веб-сервер для отправки кеширования HTTP-заголовков для script.
Поддельные заголовки в документах HTML:
- Не поддерживаются как реальные HTTP-заголовки
- Применить к HTML-документу, а не к ресурсам, которые он связывает с
Ответ 4
Вы можете добавить queryString в свой src и изменить его только тогда, когда вы выпустите обновленную версию:
<script src="test.js?v=1"></script>
Таким образом, браузер будет использовать кешированную версию до тех пор, пока не будет указана новая версия (v = 2, v = 3...)
Ответ 5
Вы можете добавить случайную строку (или строку datetime) в качестве строки запроса к URL-адресу, который указывает на ваш script. Например:
<script type="text/javascript" src="test.js?q=123"></script>
Каждый раз, когда вы обновляете страницу, вам нужно убедиться, что значение "q" изменено.