2012-07-06 109 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" 

更多细节。