Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在浏览器中缓存静态文件_Python_Http_Caching_Browser_Header - Fatal编程技术网

Python 在浏览器中缓存静态文件

Python 在浏览器中缓存静态文件,python,http,caching,browser,header,Python,Http,Caching,Browser,Header,我正在尝试为静态文件(如.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

我正在尝试为静态文件(如.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标头,并忽略缓存控制标头

我检查了我的开发人员工具,但未启用禁用缓存。我在Firefox的about:config中检查了我的设置,缓存似乎已启用

那么我在这里错过了什么?我是否缺少一个标题,是否需要一个ETAG,为什么Expires可以在Chrome中工作,而不能在Firefox中工作?

我找到了解决方案

Firefox缓存已满,因此在清空缓存后,它开始再次发送如果自头修改

此外,我的服务器将当前时间返回为上次修改的时间,而不是实际的上次修改时间

为了解决这个问题,我所要做的就是将浏览器中的如果自以来修改的时间与文件中上次修改的时间进行比较,如果没有更改,则发送304状态

我找到了解决办法

Firefox缓存已满,因此在清空缓存后,它开始再次发送如果自头修改

此外,我的服务器将当前时间返回为上次修改的时间,而不是实际的上次修改时间

为了解决这个问题,我所要做的就是将浏览器中的如果自以来修改的时间与文件中上次修改的时间进行比较,如果没有更改,则发送304状态