Разрабатываю
single page application. Использую
Application Cache. Много проблем хапнул я с ним, и, как обычно, все трудновыявимые или трудноисправимые. На данный момент столкнулся с тем, что
Chromium, открыв HTML-страницу, с прописанным
appcache-manifest-ом, сохраняет и сам
manifest в этот
Application Cache.
Заголовок HTTP-ответа на запрос к manifest-файлу: "
Cache-Control:no-cache, no-store, max-age=0, must-revalidate, proxy-revalidate". Помимо этого также пробовал "
Cache-Control: no-cache". Если загружать manifest-файл при пустом appcache-cache-е, то механизм кеширования работает штатно. На каждый запрос к manifest-у я получаю ответ 200 (не 304). Сам файл грузится не из кеша. Консоль соответственно тоже пустая. Всё штатно.
Но стоит мне загрузить HTML-страницу, в которой указан этот manifest, как начинаются чудеса. Chrome логирует "
Creating Application Cache", и подгружает 1 за одним все прописанные ресурсы (без файла manifest-а). Application Cache работает штатно и при повторной загрузке HTML страницы все файлы грузятся из кеша "
Document was loaded from Application Cache with manifest".
Но вот, что печально. И сам manifest файл тоже грузится из кеша. Можно открыть его в отдельной вкладке. Теперь, после создания appcache-а, я получаю "
Status Code:200 OK (from cache)". Консоль выводит "
Document was loaded from Application Cache with manifest portalout.dev/portal.appcache". Т.е. она этот самый manifest грузит, используя по нему же сформированный кеш. Заголовок кешированного файла всё тот же: "Cache-Control:no-cache, no-store, max-age=0, must-revalidate, proxy-revalidate". Hard reset не помогает. Но, правда, помогает галочка "Disable cache" или снос application cache на служебной странице.
Пара моментов:
- Пока не могу уверенно сказать точно, но, кажется, в Firefox такого поведения не наблюдается
- В manifest файле сам этот manifest не прописан (manifest).
- Среди заголовков ответа к запросу к manifest-у есть: "Content-Type:text/cache.manifest"
В чём может быть дело? Proxy сервера при этом
не использую.