У меня есть приложение, которое использует AppCache для хранения ресурсов в кеше браузера. Мне удалось настроить манифест в файле PHP, чтобы автоматически записывать все файлы, которые должны быть кэшированы (правильно отфильтрованы). Заголовки этого файла следующие:
header('Content-Type: text/cache-manifest');
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
Он называется appcache.php
и правильно указан в моем HTML:
<html manifest="appcache.php">
Каждый раз, когда я обновляю манифест, приложение обнаруживает обновление, и события инициируются должным образом, обновляя кеш и обновляя страницу, поэтому они перезагружаются.
Однако некоторые файлы (в основном файлы Javascript и CSS) не обновляются должным образом. Иногда требуется несколько обновлений манифеста (вместе со всем процессом), иногда требуется всего одно, а иногда это занимает целую вечность, и мне приходится удалять кеш браузера или переходить в режим инкогнито .
Приложение обнаруживает обновление, поэтому манифест не перехватывается и обновляется корректно. Проблема в том, что даже файлы загружаются повторно, они по-прежнему обслуживаются в более старой версии. И главная проблема заключается в том, что это происходит только в некоторых файлах (иногда это файлы css, иногда файлы js и т. д.: файлы не обновляются случайным образом).
На самом деле я использую Chrome v59, и на моем устройстве Android с Chrome v60 происходит то же самое.
Есть ли какое-либо объяснение, почему они не обновляются правильно? Это известная ошибка? Могу ли я что-нибудь сделать, чтобы решить эту проблему?
ОБНОВЛЕНИЕ
Кажется, чаще всего это происходит, когда я делаю несколько обновлений с небольшим промежутком времени между ними. После ожидания 24 часа или около того, это работает с первой попытки. Возможно, это поможет вам догадаться, почему это происходит.
Спасибо.