Кэширование HTML и как его отключить

379
05 августа 2017, 05:15

Привет. У меня есть веб-приложение, состоящее из html-разметки и встроенного <?php ?> кода. Я реализовал вставку скриптов и стилей при помощи создания файла config.php, в котором создал переменные $stylesheets и $scripts. И создал переменную $env, где я указываю текущее состояние окружения разработки. Если я указываю $env = 'dev', то загружаются различные не минифицированные файлы из папки /dev/, а если устанавливаю $env = 'production', то используются файлы из папки /assets/, прошедшие сборку, минификацию и прочее через Gulp. Но вот у меня какая-то беда с этим всем. Я перенёс файлы изображений и папки /img в assets/img/, и пошёл менять пути в html. Заменяю атрибут src="/img/flags/ru.png" на src="/assets/img/flags/ru.png", а изменение происходит в html не сразу. И перезагрузка без кэша не помогает. То же самое происходит и с php. Если я устанавливаю $env = 'dev', то какое-то время на странице всё ещё отображаются файлы, загружаемые из продакшн-папки. Раньше такого никогда не было. Подскажите, пожалуйста, где может кэшироваться html и как это отключить? Установлен Nginx 1.12.0 и PHP7.0 с FPM. Memcached не установлен.

Answer 1

Через переменную для нескольких типов файлов, например

# ...
# Expires map
map $sent_http_content_type $expires {
    default                    off;
    text/html                  epoch;
    text/css                   max;
    application/javascript     max;
    ~image/                    max;
}
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    expires $expires;
# ...

Для text/html мы устанавливаем значение в epoch. Это особое значение, которое явно выражается в отсутствии кеширования, что заставляет браузер всегда спрашивать, обновлен ли сам веб-сайт (ресурс).

Или только для html/htm файлов

server {
    # ....
    location ~* \.(?:html?)$ {
        expires -1;
    }
    # ....
}

Не забудьте перезагрузить NGINX после изменений.

  • Модуль ngx_http_headers_module
  • В руководстве How to Implement Browser Caching with Nginx's header Module on CentOS 7 (англ.) также найдете информацию как тестируется кэширование того или иного ресурса (JS, CSS, картинки, HTML и т.д.).
  • Настройка Nginx Expires
READ ALSO
wordpress plugin Buy one click WooCommerce

wordpress plugin Buy one click WooCommerce

Ссылка на сам плагинhttps://ru

258
Общение между docker-container внутри php-приложений

Общение между docker-container внутри php-приложений

Есть веб-сервисы внутри докер-контейнеров, назовем их api1 и api2

410
Убрать переносы в атрибуте xml при помощи php

Убрать переносы в атрибуте xml при помощи php

Есть xml файл выгруженный в строку вида

318
преобразование base64 в файл

преобразование base64 в файл

С клиента на сервер приходит json формы, в одном из полей которой храниться картинка в виде base64Как эту картинку средствами php5 сохранить на сервер...

284