【问题标题】:Caching in AngularJs routeProvider在 AngularJs routeProvider 中缓存
【发布时间】:2015-05-24 13:26:09
【问题描述】:
我在 AngularJs 中阅读了以下路由 -
'SPA 将组成视图,填充模板,并在外壳内的适当位置显示视图。如果视图已经被查看过一次,则浏览器可能已经缓存了它,并且路由器会足够聪明地不发出请求。'
这是$routeprovider 的默认行为吗?
这与$templatecacheProvider 有什么关系。
有什么方法可以抑制这种行为,即强制$routeprovider 不引用浏览器缓存?
【问题讨论】:
标签:
angularjs
angular-ui-router
ngroute
【解决方案1】:
我相信这更多地与 $http 服务有关,因为您更关心模板缓存:
https://docs.angularjs.org/api/ng/service/$http
缓存
要启用缓存,请设置请求配置缓存
属性为 true(使用默认缓存)或自定义缓存对象
(使用 $cacheFactory 构建)。启用缓存后,$http 存储
来自指定缓存中的服务器的响应。下一次
发出相同的请求,响应是从缓存中提供的,没有
向服务器发送请求。
请注意,即使响应是从缓存中提供的,
数据是异步的,就像真正的请求一样。
如果对同一个 URL 有多个 GET 请求,应该
使用相同的缓存进行缓存,但尚未填充缓存,仅
将向服务器发出一个请求,其余请求将
使用第一个请求的响应来完成。
您可以将默认缓存更改为新对象(使用
$cacheFactory) 通过更新 $http.defaults.cache 属性。全部
将缓存属性设置为 true 的请求现在将使用此缓存
对象。
如果您将默认缓存设置为 false,则仅请求指定
他们自己的自定义缓存对象将被缓存。
基本上,当您的应用程序被引导/加载时,您想要设置$httpProvider.defaults.cache = false
这将不会缓存任何模板本身并在每次路由更改时请求模板。