Ответ 1
:
<meta http-equiv="expires" content="0">
Настройка содержимого на "0" означает, что браузеры всегда загружают страницу с веб-сервера.
У меня есть веб-страница index.html, размещенная на определенном сервере. Я указал example.com
на example.com/index.html
. Поэтому, когда я вношу изменения в index.html и сохраняю его, а затем пытаюсь открыть example.com, изменения не отражаются. Причина, по которой веб-страницы кэшируются.
Затем я вручную обновляю страницу, и поскольку она загружает свежие копии, а не из кеша, она работает нормально. Но я не могу попросить моего клиента сделать это, и они хотят, чтобы все было идеально. Поэтому мой вопрос заключается в том, что есть трюк или метод, как я могу каждый раз загружать файл с сервера, а не из кеша?
P.S: Я знаю трюк для CSS, JS и файлов изображений, т.е. добавляя ?v=1
, но не знаю, как это сделать для index.html.
Любая помощь будет оценена по достоинству. Спасибо!
:
<meta http-equiv="expires" content="0">
Настройка содержимого на "0" означает, что браузеры всегда загружают страницу с веб-сервера.
Мета-теги не работали для меня так. Я устанавливаю заголовки из класса java, который реализует фильтр или контроллер. и это сработало. вот код
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0
httpResponse.setDateHeader("Expires", 0); // Proxies.
На 2018 год есть только два самых надежных способа
1) **<meta http-equiv="expires" content="0">**
Используйте этот метатег, но будьте осторожны, так как этот тег уничтожает весь кеш страницы, как только веб-страница обрабатывается браузером.
2) Создайте уникальный идентификатор на сервере для каждого запроса страницы и добавьте этот идентификатор в конце имени файла в документе HTML с помощью? перед добавлением уникального идентификатора к изображениям, документам, файлам css/js, видео и т.д., которые необходимо каждый раз загружать с сервера. Например, если у вас есть HTML-тег вроде <img src="images/profile223.jpg" alt="profile picture">
то на стороне сервера добавьте уникальный идентификатор в конце имени файла, например, это echo '<img src="images/profile223.jpg?'.$uniqueid.'"" alt="profile picture">';
. В этом примере я использую php, но вы можете сгенерировать уникальный идентификатор на любом языке. Все крупные компании, такие как Google, Facebook, Microsoft, Twitter и т.д. Используют эту технику, поскольку она является наиболее эффективным способом и не влияет на данные кэша, которые вы хотите сохранить в браузере пользователя, такие как идентификатор сеанса входа. Этот метод совместим с разными браузерами и поддерживает более старую версию IE, Firefox, Chrome, Safari и Opera. Вы можете добавить уникальный идентификатор в конце URL, используя ту же технику
Вы можете отправить дополнительные заголовки с файлом, чтобы сообщить клиенту (браузеру), что файл не должен кэшироваться. Если вы получили Apache, посмотрите mod_expires. Если вы используете язык сценариев на стороне сервера, например PHP, вы также можете решить его с помощью этого.
Я когда-либо встречал эту проблему с моим сайтом. в URL добавьте q = ''
http://yoururl.com/somelinks?q=fill_with_random_number
для меня, он работает
Вы можете попробовать этот метод ниже. Это сработало для меня.
Пожалуйста, добавьте следующие строки кода в ваш файл .htaccess.
<IfModule mod_headers.c>
<FilesMatch "\.(html|php)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</FilesMatch>
<FilesMatch "\.(ico|pdf|jpg|png|gif|js|css)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>
</IfModule>
Если вы используете приведенный выше код, браузер не будет кэшировать файлы .html.
Добавление этих метатегов в заголовок работает для большинства браузеров (в этом случае index.html не будет кэшироваться):
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
Немного поздно, но это может помочь кому-то еще!