2014-09-29 219 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,並使用校驗和命名結果文件。這樣,這些文件可以永久緩存,因爲如果它們被更改,將會產生不同的文件名。

既然有應用程序可用於此,希望這不會造成太多麻煩。