在AngularJs routeProvider中缓存

时间:2015-05-24 13:26:09

标签: angularjs angular-ui-router ngroute

我在AngularJs中阅读了以下内容 -

  

' SPA将组成视图,填写模板,并在shell中的适当位置显示视图。如果视图已被查看一次,则浏览器可能已缓存它,并且路由器将足够聪明,不会发出请求。'

这是$routeprovider的默认行为吗? 这与$templatecacheProvider有什么关系?

什么是抑制此行为的方法,即强制$routeprovider不引用浏览器缓存?

1 个答案:

答案 0 :(得分:0)

我认为这更多地与$ http服务有关,因为你更关注模板缓存:

https://docs.angularjs.org/api/ng/service/ $ HTTP

  

<强>缓存

     

要启用缓存,请设置请求配置缓存   property为true(使用默认缓存)或自定义缓存对象   (使用$ cacheFactory构建)。启用缓存后,$ http存储   来自指定缓存中的服务器的响应。下一次   发出相同的请求,响应从缓存中提供   向服务器发送请求。

     

请注意,即使响应是从缓存提供的,也是如此   数据的异步方式与实际请求的方式相同。

     

如果对同一个URL有多个GET请求   使用相同的缓存进行缓存,但仅缓存尚未填充   将向服务器发出一个请求,其余请求将发出   使用第一个请求的响应来完成。

     

您可以将默认缓存更改为新对象(使用   $ cacheFactory)通过更新$ http.defaults.cache属性。所有   将cache属性设置为true的请求现在将使用此缓存   对象

     

如果将默认缓存设置为false,则只设置指定的请求   他们自己的自定义缓存对象将被缓存。

基本上,当你的应用程序被引导/加载时,你想要设置$httpProvider.defaults.cache = false

这将不会缓存任何模板本身,并在每次路径更改时请求模板。