Flask中如何实现静态文件的浏览器缓存?
我一直在阅读Python的Flask文档,并在搭建一个本地网站。
刚刚用这个工具进行了一次网站速度测试,我的网站是部署在OpenShift上的,结果是这样的:
分析报告显示我的网站没有缓存静态资源。经过一番谷歌搜索,我了解到:
- 这和“头部信息”有关。
- 缓存的副本会保存在客户端机器上,还有在客户端和网站之间的服务器上。
我的问题
我需要在HTML部分添加过期时间和标签吗?还是在HTTP头部信息部分添加?
如果是在HTTP头部信息部分,我该怎么做呢?
如果我在文档中遗漏了什么,请告诉我。
2 个回答
0
我遇到了这个问题,网上找了很久也没找到合适的解决办法。
后来我意识到,我的静态文件根本没有通过Flask来提供!Flask只是生成我的HTML页面,而静态文件是直接由我的网络服务器提供的(在我的情况下是Apache,你的可能是Nginx或者其他的)。
Apache的设置步骤:
首先安装相关的模块
sudo a2enmod expires
sudo a2enmod headers
然后在你的.htaccess
文件中添加类似下面的内容:
# Expire headers
<ifModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</ifModule>
# Cache-Control Headers
<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\.(css|js)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
</ifModule>
# END Cache-Control Headers
Apache的配置修改自 关于如何配置的更多细节可以查看Apache手册。
7
你可以使用 'SEND_FILE_MAX_AGE_DEFAULT',或者了解一下 webassests 的相关内容。这里有个链接,可以帮助你更好地理解。
这里有一个类似的问题可以参考。Flask 静态文件的缓存控制