根据 文件:
Clear-Site-Data头清除与请求网站相关的浏览数据(cookies,存储,缓存)。
现在试了一下,在截图中可以看到(Firefox v76),在响应部分。Clear-Site-Data
在浏览器中被设置为 "缓存",但是,你仍然可以看到资产为 "缓存"。
注: 即使在一段时间后回溯浏览,缓存的资产似乎也没有被清除。
在我的印象中,这种情况会立即发生,但我不能让它工作。这应该是即时发生的还是过一段时间后发生的,或者我只是错过了一些其他的东西?
更新为那些谁关心。
Clear-Site-Data
似乎只有在... localhost
或 https
这应该是瞬间发生的,还是经过一段时间后,或者我只是错过了一些其他的?
它应该是即时发生的。(草案) 规范声明:
如果
Clear-Site-Data
头存在于从网络接收到的HTTP响应中,那么在向用户呈现响应之前,数据必须被清除。
此外,正如你在 此话 只有当请求是安全的时,它才会被支持(要么是 https
或 localhost
).
我准备了一个简单的测试,有两个资源。
index.html
-- 一个链接到CSS文件的页面,同时接受一个 ?clear
查询参数中包含一个 CSD
头信息style.css
-- 一个带有随机颜色的CSS页面,以明确何时再生,并声明自己是可缓存的。这与Firefox 76.0.1的规定一样;当收到一个带有 Clear-Site-Data: "cache"
在获取其子资源之前,缓存会被清除。
Clear-Site-Data
:index.html
通过输入URL并点击 进入style.css
是由缓存提供的,而且页面的颜色不会改变。Clear-Site-Data
:index.html?clear
通过输入URL并点击 进入style.css
是 不 从缓存中提供的服务,页面的颜色会发生变化。#!/usr/bin/python3
import http.server
import socketserver
import random
PORT = 8000
class SampleDataHandler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
if ".css" in self.path:
self.send_response(200)
self.send_header('Content-Type', 'text/css')
self.send_header('Cache-Control', 'max-age=3600')
self.end_headers()
color = b"%06x" % random.randint(0, 0xFFFFFF)
self.wfile.write(b"html{background-color: " + color + b";}\n")
else:
self.send_response(200)
if '?clear' in self.path:
self.send_header('Clear-Site-Data', '"cache"')
self.end_headers()
self.wfile.write(b"<link rel=stylesheet href=style.css>This is the content.\n")
httpd = socketserver.TCPServer(("", PORT), SampleDataHandler)
httpd.serve_forever()