防止200(缓存)响应

时间:2014-09-29 09:31:05

标签: django apache caching

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

处理这个问题的最佳方法是什么?这样的问题会在哪里解决?

  • Django响应中的标题?

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

  • 别的什么?

我不希望在每次更改后都经历重命名文件的路径,对我来说这似乎不是一个干净的解决方案。任何适当的技术来实现这个目标吗?

我注意到的一件事是,我得到的200 (cached)响应中包含以下内容:

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

The Last modified infact应该是2014年9月29日格林尼治标准时间09:14左右。它可能与Expires标题有关吗?如果是,我应该如何设置到期,也许,将来一天或更短时间?同样,这必须通过我认为的Apache来完成吗?

注意:缓存带来的性能增益/损失绝对不是问题。

1 个答案:

答案 0 :(得分:0)

请查看使用WhiteNoisedjango-compressor来处理此问题。

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

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