gpt4 book ai didi

http - 避免缓存 http 响应

转载 作者:可可西里 更新时间:2023-11-01 15:04:44 26 4
gpt4 key购买 nike

避免任何类型的 http 数据缓存的最终解决方案是什么?我们可以修改客户端和服务器 - 所以我认为我们可以在客户端和服务器之间拆分任务。

Client 可以向每个请求附加一个随机参数 http://URL/path?rand=6372637263 – 我的感觉是只使用这种方式是行不通的100% - 可能有一些智能代理可以检测到……另一方面,我认为如果 URL 与之前的不同,代理不能简单地决定发回一些缓存响应。

server上可以控制一堆HTTP headers:

Expires: Tue, 03 Jul 2001 06:00:00 GMT
Last-Modified: {now} GMT
Cache-Control: no-store, no-cache, must-revalidate, max-age=0
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache

对此有何评论,最好的方法是什么?

最佳答案

服务器端缓存控制 header 应如下所示:

Expires: Tue, 03 Jul 2001 06:00:00 GMT
Last-Modified: {now} GMT
Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate

避免在客户端重写 URL,因为它会污染缓存,并导致其他奇怪的语义问题。此外:

  • 使用一个 Cache-Control header (参见 rfc 2616 ),因为具有多个条目的行为是未定义的。第二个缓存控制中的 MSIE 特定条目也是 at best redundant .

  • no-store 是关于数据安全的。 (这仅意味着不要将其写入磁盘 - 仍然允许缓存将响应存储在内存中)。

  • Pragma: no-cache 在服务器响应中没有意义 - 它是一个请求 header ,意味着任何接收请求的缓存都必须将其转发到源。

  • 同时使用 Expires (http/1.0)cache-control (http/1.1) 并不是多余的,因为存在只支持 http/1.0 的代理,或将协议(protocol)降级。

  • 从技术上讲,鉴于 no-cache,最后修改的 header 是多余的,但最好将其保留在那里。

  • 一些浏览器在遇到不认识的指令后会忽略缓存控制 header 中的后续指令 - 因此请将重要的内容放在第一位。

关于http - 避免缓存 http 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9884513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com