2012-07-06 110 views
16

我想設置一個合理的緩存屆滿我JS文件,同時在發展。我有標準設置,其中HTML,CSS和JS都位於static目錄下。瓶靜態文件緩存控制

docs做提到這一點,但我的生活,我不能得到這個工作。我已經試過這兩種方法暗示,第一

class MyFlask(flask.Flask): 
    def get_send_file_max_age(self, name): 
     if name.lower().endswith('.js'): 
      return 60 
     return flask.Flask.get_send_file_max_age(self, name) 

app = MyFlask(__name__) 

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60 

雙方都沒有效果,在我的JS文件/靜態仍然回來用默認緩存超時,

Cache-Control: public, max-age=43200 

任何指針讚賞。

+4

1.您是否使用flask dev服務器或像nginx這樣的http代理? 2.您應使用''回報超(MyFlask,個體經營).get_send_file_max_age(名稱)''而不是''返回flask.Flask.get_send_file_max_age(個體經營,名稱)''。 – Jarus 2012-07-24 10:01:55

+0

上面的類適用於我,使用defualt燒瓶開發服務器。 – 2012-11-28 20:17:31

+0

對於這些和性能的原因,我(以及我所聽到的許多人)讓我的靜態文件由我使用任何網絡服務器(nginx的/阿帕奇)直接送達。 – 2013-06-21 13:30:47

回答

0

你可能想看看webassets管理高速緩存期滿。它適用於開發和生產環境。

2

我有這個問題,但沒有找到答案網上爲我工作。

然後我意識到我的靜態文件不被從瓶裏來的! Flask只生成我的HTML。靜態文件直接由我的Web服務器提供(在我的情況下,Apache可能是Nginx或其他)。

以下是爲Apache的說明。

首先安裝指定mod_expires模塊:

sudo a2enmod expires

然後加入這樣的事情你.htaccess文件:如何在Apache manual配置它

ExpiresByType text/css "access plus 1 year" 
ExpiresByType application/javascript "access plus 1 year" 
ExpiresByType image/* "access plus 1 year" 

更多細節。