Подтвердить что ты не робот

Загружайте index.html каждый раз с сервера, а НЕ из кеша

У меня есть веб-страница index.html, размещенная на определенном сервере. Я указал example.com на example.com/index.html. Поэтому, когда я вношу изменения в index.html и сохраняю его, а затем пытаюсь открыть example.com, изменения не отражаются. Причина, по которой веб-страницы кэшируются.

Затем я вручную обновляю страницу, и поскольку она загружает свежие копии, а не из кеша, она работает нормально. Но я не могу попросить моего клиента сделать это, и они хотят, чтобы все было идеально. Поэтому мой вопрос заключается в том, что есть трюк или метод, как я могу каждый раз загружать файл с сервера, а не из кеша?

P.S: Я знаю трюк для CSS, JS и файлов изображений, т.е. добавляя ?v=1, но не знаю, как это сделать для index.html.

Любая помощь будет оценена по достоинству. Спасибо!

4b9b3361

Ответ 1

:

<meta http-equiv="expires" content="0">

Настройка содержимого на "0" означает, что браузеры всегда загружают страницу с веб-сервера.

Ответ 2

Мета-теги не работали для меня так. Я устанавливаю заголовки из класса 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.

Ответ 3

На 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, используя ту же технику

Ответ 4

Вы можете отправить дополнительные заголовки с файлом, чтобы сообщить клиенту (браузеру), что файл не должен кэшироваться. Если вы получили Apache, посмотрите mod_expires. Если вы используете язык сценариев на стороне сервера, например PHP, вы также можете решить его с помощью этого.

Ответ 5

Я когда-либо встречал эту проблему с моим сайтом. в URL добавьте q = ''

http://yoururl.com/somelinks?q=fill_with_random_number

для меня, он работает

Ответ 6

Вы можете попробовать этот метод ниже. Это сработало для меня.

Пожалуйста, добавьте следующие строки кода в ваш файл .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.

Ответ 7

Добавление этих метатегов в заголовок работает для большинства браузеров (в этом случае 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" />

Немного поздно, но это может помочь кому-то еще!