Кэширование php-страниц в приложении HTML5

Я занимаюсь разработкой автономного приложения, которое также имеет набор страниц .php. В настоящее время я поместил эти php-файлы в файлы манифеста .appcache, и он работает нормально. Но проблема в том, что, хотя я в сети, когда я пытаюсь получить доступ к странице php, она загружает кэшированную версию. Что я предпочитаю, так это функциональность,

  • Если он-лайн — подключитесь к серверу и загрузите актуальную информацию, а также перезапишите кэшированную новую информацию.
  • Если не в сети — показать последнюю обновленную статическую HTML-страницу.

Вот мой файл манифеста .appcache

CACHE MANIFEST
#2
taskmanager.php
public/css/bootstrap.css.map
public/css/bootstrap.min.css
public/css/bootstrap-theme.css.map
public/css/bootstrap-theme.min.css
public/css/main.css
public/css/task-manager.css
public/js/app.js
public/js/taskmanager.js
public/js/offlink.js
public/js/jquery-2.1.4.js
public/js/bootstrap.min.js

NETWORK:
*
http://*

Taskmanager.php читает задачи из базы данных и показывает их. Когда я кеширую его, как указано выше, он всегда показывает список задач, когда он был загружен с первого раза. Даже когда я в сети, он не вызывает базу данных и не получает новые записи. Вместо этого он загружается из кеша. Итак, мое решение было поместить его в раздел FALLBACK, как упоминалось в первом ответе.
Даже если я помещу файл taskmanager.php в раздел FALLBACK, как показано ниже,

FALLBACK
taskmanager.php static_taskmanager.php

Теперь, если у меня есть подключение к Интернету, будет запущен taskmanager.php, который покажет мне последние задачи. Но я хочу сделать static_taskmanager таким образом, чтобы он был синхронизирован с последним набором задач. Это означает, что когда пользователь переходит в автономный режим, static_taskmanager.php покажет самый последний список задач, который был возвращен taskmanager.php, когда пользователь был в сети). Но на данный момент это работает как полная статическая страница.

  1. Можно ли сделать это?
  2. Как я могу решить эту проблему?

РЕДАКТИРОВАТЬ

Как я понял из поиска по SO и Google, одним из способов достижения этого является загрузка динамического контента с использованием AJAX. Но мне интересно, возможно ли это сделать, используя только сам файл манифеста.

5

Решение

Как насчет использования FALLBACK?

ОТСТУПАТЬ

Секция FALLBACK сообщает браузеру, что обслуживать, когда пользователь
пытается получить доступ к некэшированному ресурсу в автономном режиме. Из-за этого,
это выглядит немного иначе, чем CACHE и NETWORK. Он содержит два
значения в строке, разделенные пробелом. Первое значение — это запрос
URI для сопоставления, а второй — это ресурс, отправляемый при сопоставлении. Это
кэширует ресурс справа для автономного использования, так что это должно быть
явный путь. (http://html5doctor.com/go-offline-with-application-cache/)

FALLBACK:
/main.php /static.php

При такой конфигурации запросы на /main.php будут обслуживаться, если пользователь не находится в автономном режиме, и в этом случае пользователь увидит последнюю кэшированную версию /static.php.

Помните, что обновление ресурсов на вашем сервере не приведет к обновлению кэша. Вы должны изменить файл манифеста. В этом случае вам может потребоваться обновить манифест с комментарием к версии или метке времени при создании новой версии static.php.

# Generated: 2015-07-23 10:34a

В этом случае я бы порекомендовал удалить файл main.php из кэша или использовать статический запасной вариант, который позволяет пользователю узнать, что он просматривает более старый контент. Причина в том, что даже если static.php обновлен, если пользователь не в сети и не получает это обновление, он все равно увидит старое содержимое.

Если вы видите проблемы с производительностью и хотите уменьшить нагрузку на сервер, вы можете создать статическую версию main.php с помощью wget, например:

wget http://example.com/main.php -O main.html

Это сохранит содержимое страницы в формате HTML. Запускать как задание cron, его можно обновлять каждые пять минут или около того.

Альтернативой является обновление static.php и appcache каждый раз, что, вероятно, приведет к перезагрузке всех ресурсов, что приведет к потере цели кеша.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector