【问题标题】:Preventing 200 (Cached) responses防止 200(缓存)响应
【发布时间】:2014-11-23 15:44:46
【问题描述】:

我刚刚部署了一个 Django 应用程序,其中大部分前端代码都在 Javascript 文件中。问题是,每当我对我的 JS 文件进行更新时,如果有人打开页面,这并不会反映出来,因为他们得到 '200 (Cached)' 响应,并且正在获取以前的版本的静态文件。 CTRL-F5 当然可以解决这个问题。

处理此问题的最佳方法是什么?这样的问题哪里可以解决?

  • Django 响应中的标题?

  • 一些 Apache 配置(因为静态文件是服务器直接来自 阿帕奇)

  • 还有别的吗?

我不想在每次更改后都重命名文件,这对我来说似乎不是一个干净的解决方案。有什么合适的技术可以实现这一点吗?

我注意到的一件事是,我收到的 200 (cached) 响应的标题中有这些:

Expires:Fri, 28 Nov 2014 04:11:29 GMT
Last-Modified:Sun, 28 Sep 2014 19:43:58 GMT

最后修改的事实应该是 2014 年 9 月 29 日 09:14 GMT 左右。可能与Expires 标头有关吗?如果是,我应该如何设置过期时间,也许是一天或更短的时间?再说一次,我想这必须通过 Apache 来完成?

注意:由于缓存导致的性能增益/损失在这里绝对不是问题。

【问题讨论】:

    标签: django apache caching


    【解决方案1】:

    看看使用WhiteNoise 或django-compressor 来处理这个问题。

    大多数 Django 生产部署在第一次获取时会缩小 CSS/JS,并使用校验和命名生成的文件。这样,文件可以被永久缓存,因为如果它们被更改,将会产生不同的文件名。

    由于已经有可用的应用程序,希望这不会给您带来太多麻烦。

    【讨论】:

      猜你喜欢
      • 2018-02-03
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多