Если AngularJS кэширует подстраницы, то как мы можем принудительно перезагрузить?

0

Я заметил, что если я использую ngRoute и ngRoute одностраничное приложение (SPA) с помощью AngularJS, а затем загружаю 2 подстраницы: main.html и second.html, а затем внутри консоли отладки Google Chrome, я увижу, что когда я впервые загружу SPA page, он будет загружать main.html, а при нажатии на другую ссылку в SPA, он будет загружать second.html из сети, но затем перестанет загружать main.html или second.html.

В заголовке ответа HTTP я не вижу значения срока действия, и заголовок HTTP-запроса на самом деле имеет pragma: no-cache.

Обновление: в комментарии @sdfacre предположил, что из-за $templateCache кэширование страниц, так что, если это Best Buy, закрывая сайт и через 1 час обновляя его содержимое для рождественской продажи или на сайте Target Store, обновляет его дизайн при ежемесячном капитальном ремонте веб-сайта, тогда как SPA может повторно загрузить подстраницы или все страницы, если некоторые пользователи действительно могут открыть страницу несколько часов назад и до сих пор имеют старую версию SPA в браузере?

  • 1
    Он хранит шаблоны в $ templateCache. Пользователь должен обновить всю страницу, если есть какие-либо изменения шаблона.
Теги:
ngroute

1 ответ

0

Вы можете очистить угловой шаблонный кеш с помощью

app.run(['$templateCache', function ( $templateCache ) {
    $templateCache.removeAll(); }]);

См. Здесь

  • 0
    Я добавил код в код mainController, но по какой-то причине до сих пор не вижу перезагрузки страниц. И как вы запускаете его, скажем, если Best Buy предвидит капитальный ремонт веб-сайта 12 марта, а затем отложит его до 19 марта, или если у Target может быть релиз каждый понедельник или вторник недели в 3:00, тогда может быть код, который говорит, что когда время истекло, а теперь вычисленное значение (timestamp / whatNumber) = 126, и оно должно быть равным 127, если оно прошло после того, как UNIX-отметка во вторник 3:00, теперь перезагрузите все страницы ... или, возможно, получите версию номер с сервера и если отличается, очистите весь кеш
  • 0
    Вышеупомянутое решение эквивалентно «без кеша» и всегда будет получать последнюю копию с сервера. Если вы хотите избирательное кэширование, вам нужно создать динамические имена шаблонов, что обычно делается путем добавления версии в конец имени / URL-адреса шаблона.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню