apache2 Изменение DirectoryIndex не обходит кэшированный индекс - PullRequest
0 голосов
/ 25 мая 2018

Я стараюсь, чтобы посетители моего сайта видели последнюю версию.Для этого я написал скрипт для переименования соответствующих файлов и запросов, чтобы они добавляли свежий номер версии во время сборки.Это включает в себя индексный файл, назовем его index-v123.html.

Я загрузил этот встроенный источник и указал мой apache2 сервер на новый индексный файл, включив в свой файл

DirectoryIndex index-v123.html

apache2.conf.Я перезапустил его, и при просмотре веб-сайта в режиме инкогнито chrome или в режиме жесткого обновления я вижу, что все новые файлы загружены и веб-сайт работает, как и ожидалось.

Моя проблема заключается в том, что в моем обычном браузерекогда я захожу на URL, я все равно загружаю кешированную версию index.html.Очевидно, что изменение DirectoryIndex не убедило клиента перейти к новому файлу индекса, как я и надеялся ...

Так что я могу сделать что-нибудь, чтобы это произошло?

(Также может быть актуально: я запускаю прогрессивное веб-приложение, использующее Polymer 2.0, с service-worker.js, которое автоматически создается с помощью polymer build.)

1 Ответ

0 голосов
/ 30 мая 2018

Это оказалось проблемой работника службы: service-worker.js кэшировалось на стороне клиента и, следовательно, предоставляло устаревшее содержимое, как если бы клиент находился в автономном режиме.Может быть обновлено только путем отмены регистрации работника.Решение состояло в том, чтобы внедрить max-age=0 на сервисном работнике на стороне сервера apache2:

<Files index.html|service-worker.js>
    FileETag None
    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"
</Files>

Был удивлен, что это не было лучше выделено где-нибудь в документации по сборке / производству полимеров.Для справки: в google primer для сервисных работников написано:

Заголовки кэширования в скрипте сервисных работников учитываются (до 24 часов) при получении обновлений.Мы собираемся сделать это по своему усмотрению, так как это ловит людей.Возможно, вам нужен максимальный возраст 0 для сценария работника службы.

...