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

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

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

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

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

1 ответ

Решение

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

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

    ОБРАТНАЯ СВЯЗЬ: signin.htm signin-offline.htm

Другие вопросы по тегам