Файл webapp .appcache кэширует динамическую страницу - PullRequest
3 голосов
/ 20 апреля 2011

Главная страница моего мобильного веб-приложения - страница .jsp.Моему приложению требуется вход в систему (Google App Engine), поэтому есть кнопка «Вход», когда пользователь не вошел в систему, и кнопка «Выход из системы», когда пользователь вошел в систему, и все это обрабатывается кодом на странице .jsp.

Я загружаю много кода JS на страницу, поэтому я использовал файл .appcache для его кеширования.К сожалению, даже несмотря на то, что я добавил свою страницу .jsp в область «Сеть», страница забавным образом кэшируется, игнорируя сервер содержимого с сервера.Это означает, что кнопка «Выход из системы» показывает, когда пользователи вышли из системы, и наоборот.

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

Идеи

Ответы [ 2 ]

3 голосов
/ 21 апреля 2011

Согласно погружению в HTML5, страница, которая ссылается на манифест, автоматически включается в манифест.

http://diveintohtml5.ep.io/offline.html

В: Нужно ли перечислять мои HTML-страницы в манифесте кеша?

A: Да и нет. Если все ваше веб-приложение содержится на одной странице, просто убедитесь, что страница указывает на манифест кэша с помощью атрибута manifest. Когда вы переходите на HTML-страницу с атрибутом манифеста, предполагается, что сама страница является частью веб-приложения, поэтому вам не нужно указывать ее в самом файле манифеста. Однако, если ваше веб-приложение занимает несколько страниц, вы должны перечислить все HTML-страницы в файле манифеста, иначе браузер не будет знать, что существуют другие HTML-страницы, которые необходимо загрузить и кэшировать.

У меня похожая проблема, и я думаю, что в итоге я загружу содержимое страницы через AJAX.

1 голос
/ 12 мая 2012

Кэширование в appCache - это двухэтапный процесс: сначала проверяется манифест кэша (в данном случае, когда страница загружается), затем, если его содержимое изменилось, этот контент перезагружается.Однако в вашем случае к этому времени устаревшая страница уже загружена и отображается.

Самым простым решением было бы специально исключить страницу (но не .js) из appCache, чтобы толькоjs кешируется, а не страница.Похоже, вы, наверное, поняли это, пытаясь сделать это, поместив страницу в сетевую область.Убедитесь, что это исключение верно, так как это звучит как проблема, и что атрибуты html-кэша установлены на этой странице правильно.

...