Как предотвратить кэширование моего файла 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 ?

582   5  

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-документах:

  1. не так хорошо поддерживаются, как реальные заголовки HTTP
  2. применить к 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

    Ничего не найдено.