【问题标题】:Caching best practice for AngularJS dynamic sites?缓存 AngularJS 动态站点的最佳实践?
【发布时间】:2015-10-19 06:50:26
【问题描述】:

我正在开发一个流量很大的 AngularJS 项目。

在开发过程中,我偶然发现了部分缓存的问题,并且没有针对不同的操作进行更新。当然,我可以使用 .run 和 $templateCache.removeAll(); 来摆脱这个问题。例如, 但要确保这实际上是一个好主意。

有些部分是动态更新的(用户输入,或间隔自动更新),而有些是静态的或很少更新。

在这种情况下,缓存的最佳方法是什么?

对于非 Angular 网站,我更喜欢清晰地划分职责,例如: 1. 缓存头在应用级别设置 2. nginx - 只是为了服务网站本身 3. Varnish 为静态资产做 FPC + CDN 或 CDN 做全页缓存(取决于客户端/项目等)等等等等等等。 关键点:每个部分都有自己独特的职责。

通过这个项目,我可以将 Varnish 和 CDN 用于静态资产, 多服务器设置。也可以重新使用 Varnish 进行负载平衡,即我可能在几个 Web 节点上安装了 Varnish。我在基础架构方面有一定的灵活性。

请分享您对最佳设置的看法? 特别是:它仍然值得缓存部分吗? 如果是,那么设置 CC 标头的最佳位置是什么? 那么刷新缓存的最佳方法是什么,尤其是。如果我只需要刷新一些子选择?

谢谢!! D.

【问题讨论】:

标签: angularjs caching


【解决方案1】:

自己发布答案,因为无法选择 rob 的 回复作为答案。我的解决方案是基于他的建议,这对我前进有很大帮助:

在生产构建期间:

  1. 我正在使用“gulp-rev-easy”gulp 模块来加速以前的 串联和丑化的 css 和 js 文件。
  2. 但是,现有的 revving 模块无法为我提供所需的功能:用我自己的 CDN 路径替换 index.html 模板文件中的特定字符串,用于 CSS 和 JS 脚本。所以我不得不添加我自己的函数/覆盖reveasy。
  3. 根据 rob 的,我已经开始使用 templatecache,它与 revving 结合使用效果很好。
  4. 图像只是通过 S3 -> CDN 对。

一些快速说明:

  1. 使用 revving 来“破坏”缓存被证明是最快的,并且 处理缓存的最简单方法,因为 CloudFront 大约需要。 20 使路径无效的分钟,其他 CDN - 更少,但你仍然有 发出请求等。
  2. 用于动态更新的具有相同名称的图像,例如头像图像 用户可以通过他的个人资料区域更新,我建议添加一个 时间戳或文件名的一些随机字符串。在添加一个 随机 URL 路径听起来更容易,您将无法缓存它。

希望这会有所帮助, 丹尼斯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 2014-02-20
    • 1970-01-01
    • 2010-10-31
    • 2015-10-16
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多