【问题标题】: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

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

    【讨论】:

      猜你喜欢
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多