Flask中如何实现浏览器缓存静态文件?

9

我一直在阅读 Python Flask 文档并构建本地网站。

刚刚使用这个工具 在 OpenShift 上对我的网站进行了速度测试,结果显示我的网站未缓存静态资源。通过搜索得到以下信息:

  • 与头文件有关。
  • 缓存副本保存在客户端和站点之间的服务器上。

我的问题

  • 我应该在 HTML 部分还是 HTTP 头部分中包含过期和标签?

  • 如果要在 HTTP 头部分中添加,应该如何操作?

如果我错过了文档中的某些内容,请告诉我。

2个回答

7

我已经看到了提到的问题。那里的问题是缓存设置为非常大的默认值。我的问题是测试显示我的网站不缓存静态元素。这回答了我完成任务的基本要求。我还想知道标签是添加在HTTP还是HTML文档头中。因此,这是一个未来资源的新问题。 - arjoonn
HTTP 头信息。响应头信息。 - PsyKzz
好的。但是为什么内容不能长时间缓存?我已经在http://tools.pingdom.com/fpt/进一步检查了。 - arjoonn

0

我曾经遇到过这个问题,但在网上找不到适用于我自己的答案。

然后我意识到我的 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手册中的配置说明。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接