2016-12-30 9 views
2
.

. Мне нужно заставить мое приложение (SPA) не кэшировать index.html для действий навигации по странице.Приложение для одиночной страницы IIS/AngularJS. Как предотвратить кеширование страниц одного index.html при навигации в приложении.

У моего приложения есть распаковка кеша, но он работает только при обновлении (перезагрузке) index.html.

Как заставить приложение не кэшировать index.html при навигации по моему приложению и перезагрузить index.html при каждом нажатии на кнопку навигации или действия?

Вот мой существующий фрагмент кода index.html:

<!DOCTYPE html> 
<html lang="en" manifest="sw.appcache"> 
    <head> 
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> 
    <meta http-equiv="Pragma" content="no-cache" /> 
    <meta http-equiv="Expires" content="0" /> 

содержание sw.appcache файл

CACHE MANIFEST 
NETWORK: 
* 

Edit:

следующее дополнение к скриптовый тег в моем index.html для ces для перезагрузки при каждом изменении URL-адреса.

window.onhashchange = function() { 
     var parts = window.location.href.split("#"); 
     window.location.href = window.location.protocol + "//" + window.location.host + "?t=" + (new Date()).getTime() + "#" + parts[1]; 

     } 
+1

Если вы заставляете перезагрузки страницы при каждом изменении навигации, вы можете также просто использовать обычный веб-приложение вместо заботясь о SPA. –

ответ

1

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

Лучшим способом является использование URL-адреса с параметром запроса.

Вместо http://example.com/mypage.html
Использование: http://example.com/mypage.html?timestamp

Где метка времени генерируется динамически во время выполнения, и может быть случайное число или любой динамически уникальная строка, которую вы хотите.

Это также хороший трюк, чтобы браузеры кэшировать CSS, JS, изображения и т.д.

+0

Спасибо за быстрый ответ, приложение является чисто угловым кодом на моем конце, и поэтому я не думаю, что могу добавить временную метку по запросу. Также я использую маршруты для перехода на страницу. – Vahe

+1

@Vahe Нет проблем. Угловая или любая другая JS может использовать window.redirect, если вам действительно нужно. Другой вариант - динамически загружать ресурсы (тот же трюк), а не беспокоиться о загрузке всей страницы в качестве нового запроса. Удачи в кодировании джунглей! – TinkerTenorSoftwareGuy

 Смежные вопросы

  • Нет связанных вопросов^_^