2014-09-29 147 views
0

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

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

  • Django响应中的标题?

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

  • 别的东西吗?

我不想在每次更改后重命名文件的路径,它似乎不是一个干净的解决方案。任何适当的技术来实现这一点?

有一两件事,我注意到,在200 (cached)响应,我得到了这些标题中:

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

最后修改INFACT应在2014年9月29日09:14 GMT。这可能与Expires标题有关吗?如果是的话,我应该如何设定到期日,也许在将来一天或更少?再次,这需要通过Apache来完成我的设想?

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

回答

0

看看使用WhiteNoisedjango-compressor来解决这个问题。

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

既然有应用程序可用于此,希望这不会造成太多麻烦。