Предотвращение запуска обновлений кеша приложений для определенных кэшированных страниц

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

У меня была надежда, когда я увидел другой пост с идентификатором сеанса, который передается в качестве параметра URL-адресу манифеста, но в моем случае это не помогает, поскольку он все еще загружает кеш перед входом в систему. Учитывая, что мой пользователь может открыть страницу входа находясь в сети, но войдите в систему только после того, как не в сети.

Мне нужен способ остановить обновления кеша на определенных страницах, таких как моя страница входа, не удаляя мою страницу входа из моего манифеста. Я пробовал следующий код, но все страницы загружаются в любом случае:

window.applicationCache.addEventListener("checking",function(e){
    e.stopPropagation();
    e.preventDefault();
}, true);

person Gary-William Houle    schedule 11.04.2016    source источник


Ответы (1)


Возможно, я нашел способ делать то, что хочу. Вот мое решение, если у кого-то еще есть аналогичная проблема.

  • Либо создайте login_offline.html, либо перехватите запрос на стороне сервера и перенаправьте */login_offline.html на login.html.
  • Замените */login.html на */login_offline.html в манифесте и удалите объявление манифеста в */login.html . Оставьте объявление манифеста на всех страницах, которые доступны только после входа в систему.
  • Добавьте в манифест раздел Fallback, если его еще нет, и вставьте в него:

    ЗАПАС: signin.htm signin-offline.htm

person Gary-William Houle    schedule 12.04.2016