我刚刚在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来完成吗?
注意:缓存带来的性能增益/损失绝对不是问题。
答案 0 :(得分:0)
请查看使用WhiteNoise或django-compressor来处理此问题。
Django的大多数生产部署在第一次获取时缩小CSS / JS,并使用校验和命名结果文件。这样,文件可以永久缓存,因为如果它们被更改,将导致不同的文件名。
由于已有可用的应用程序,希望这不会给您带来太多麻烦。