在浏览器中缓存静态文件

问题描述 投票:0回答:1

我正在尝试为.css和.js等静态文件启用缓存。我正在使用Python运行WSGI服务器。

我已经尝试设置以下标头用于缓存:

headers.add_header('Cache-control', f'public, max-age={expires.strftime(RFC_1123_DATE)}')
headers.add_header('Expires', expires.strftime(RFC_1123_DATE))
headers.add_header('Last-Modified', generate_last_modified())

浏览器中收到的标题:

HTTP/1.0 200 OK
Date: Tue, 21 Apr 2020 08:06:17 GMT
Server: WSGIServer/0.2 CPython/3.6.9
Content-Encodings: 
Content-Type: text/css; charset=UTF-8
Cache-control: public, max-age=Tue, 28 Apr 2020 08:06:17 GMT
Expires: Tue, 28 Apr 2020 08:06:17 GMT
Content-Length: 23399
Last-Modified: Tue, 21 Apr 2020 08:06:1587452777S GMT
Accept-Ranges: bytes

使用Chrome时,此代码有效,并且文件将按照您的期望从缓存中存储和检索。 Chrome正在使用Expires标头,并忽略了[[Cache-Control标头。

我检查了我的开发人员工具,并且未启用

禁用缓存

。我在about:config中检查了Firefox中的设置,似乎启用了缓存。 所以我在这里想念什么?我是否缺少标题,是否需要ETAG?为什么

Expires

在Chrome中工作,但在Firefox中工作不正常?
python http caching browser header
1个回答
0
投票
我找到了解决方案。

Firefox缓存已满,因此在清空缓存后,它开始再次发送

if-modified-since标头。

也我的服务器将当前时间作为

last-modified

时间而不是实际的上次修改时间返回。 要解决这个问题,我所要做的就是将浏览器的

if-modified-since

时间与文件的上次修改时间进行比较,如果没有任何更改,则发送304状态。
© www.soinside.com 2019 - 2024. All rights reserved.