如何使用Flask资产为静态文件设置缓存

时间:2015-07-31 10:22:36

标签: python flask webassets flask-assets

我在项目中使用Flask资源来组合所有js和css文件。它工作得很好。

assets = Environment(app)
js = Bundle('js/jquery/jquery.js','js/owl.carousel.min.js',output='gen/packed.js')

assets.register('js_all', js)

css = Bundle('css/bootstrap.css','css/font-awesome.css','css/color.css',output='gen/packed.css')
assets.register('css_all', css)

现在我想在静态文件上设置过期天数。我检查了doc中的URL到期部分。但我很困惑。我希望将30天设置为过期。如何使用flask资产实现该目标。

1 个答案:

答案 0 :(得分:0)

无法直接使用Flask资产执行此操作。它只是一个资产捆绑器,无法控制最终文件的服务。

但是我假设您在Nginx或Apache等Web服务器后运行您的应用程序(如果您不是 - you should be)。

使用其中一个设置到期时间在配置中很简单。

<强> Nginx的

location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
    expires 30d;
    add_header Pragma public;
    add_header Cache-Control "public";
}

<强>的Apache (取自this answer

# enable the directives - assuming they're not enabled globally
ExpiresActive on

# send an Expires: header for each of these mimetypes (as defined by server)
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"

# css may change a bit sometimes, so define shorter expiration
ExpiresByType text/css "access plus 1 days"