Отключение кеша на моем веб-сервере Apache, чтобы HTML-файлы были живыми - PullRequest
0 голосов
/ 21 января 2019

У меня есть сервер Linux Ubuntu 14.04, на котором работает веб-сервер Apache2, и у меня есть HTML-файлы, но когда я делаю изменения, пользователи должны очистить кеш, чтобы увидеть их, как я могу полностью отключить кеш на моем сервере, чтобы при обновлении пользователи получали живую новейшую версиювозможно ... Как я хочу, чтобы он полностью сохранял 0 кешей и был, как если бы вы загрузили .php показать самую последнюю версию без каких-либо Ctrl + F5 или очистки кеша

Я попытался редактировать мой htaccess (не уверен, что все сделал правильно) И часы поисковика я растоптал

Вот мой проверенный Htaccess

<filesMatch "\.(html|htm|js|css)$">
  FileETag None
  <ifModule mod_headers.c>
     Header unset ETag
     Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
     Header set Pragma "no-cache"
     Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
  </ifModule>
</filesMatch>
<IfModule mod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>
AddType application/x-httpd-php .m3u .m3u8

Я ожидаю, что .html будет живым файлом, поэтому изменения актуальны, новместо этого его кеширование

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вы хотите:

Header set Cache-Control "no-cache"

Помните, что это означает, что ваша страница может храниться на серверах между вами и исходным веб-сервером, но должна пройти повторную проверку. Это означает, что если изменений нет, будет использована страница кэша, что сократит время загрузки, а это именно то, что вам нужно. Если есть изменения, то будет восстановлена ​​новая страница. Это не помогает остановить eTags, это просто используется для повторной проверки и ускоряет его (это хеш для содержимого, поэтому, если он другой, страница изменилась).

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

<IfModule mod_headers.c>
    <filesmatch "\.(html)$">
        Header set Cache-Control "no-cache"
    </filesmatch>
</IfModule>
0 голосов
/ 21 января 2019

Кэширование выполняется браузером, а не сервером. Возможные варианты: назначить уникальную строку запроса каждому URL-адресу для принудительного создания нового запроса или использовать JavaScript для динамической загрузки изменяемого содержимого.
EDIT
Вы также можете добавить заголовок Cache-Control: no-cache к своему ответу.
Пример:

<iframe src="about:blank" id="iframe"></iframe>
<script>
    window.addEventListener('load',function(){
        var id = localStorage.getItem('frameid');
        if(id===undefined){
            localStorage.setItem('frameid','1');
            id = 0;
        } else localStorage.setItem('frameid',((id = parseInt(id)) + 1).toString());
        document.getElementById("iframe").src = "https://example.com/page.html?i=" + id;
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...