我一直在阅读 Python Flask 文档并构建本地网站。
刚刚使用这个工具 在 OpenShift 上对我的网站进行了速度测试,结果显示我的网站未缓存静态资源。通过搜索得到以下信息:
- 与头文件有关。
- 缓存副本保存在客户端和站点之间的服务器上。
我的问题
我应该在 HTML 部分还是 HTTP 头部分中包含过期和标签?
如果要在 HTTP 头部分中添加,应该如何操作?
如果我错过了文档中的某些内容,请告诉我。
我一直在阅读 Python Flask 文档并构建本地网站。
刚刚使用这个工具 在 OpenShift 上对我的网站进行了速度测试,结果显示我的网站未缓存静态资源。通过搜索得到以下信息:
我的问题
我应该在 HTML 部分还是 HTTP 头部分中包含过期和标签?
如果要在 HTTP 头部分中添加,应该如何操作?
如果我错过了文档中的某些内容,请告诉我。
可以使用“SEND_FILE_MAX_AGE_DEFAULT”,或者查看webassests http://webassets.readthedocs.org/en/latest/
这里有类似的问题。 Flask静态文件缓存控制
我曾经遇到过这个问题,但在网上找不到适用于我自己的答案。
然后我意识到我的 Flask 并没有提供静态文件服务!Flask 只负责生成 HTML。静态文件直接由我的 Web 服务器提供服务(在我的情况下是 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手册中的配置说明。