我阅读了http://code.google.com/speed/page-speed/docs/caching.html。它说,代理服务器可能会缓存cookie。
假设我的文件有这个标题:Cache-Control "max-age=604800, public"
Q.1。有了这个头文件,当一个静态文件被访问时,来自一个人计算机的cookie会被缓存在代理服务器上吗?(然后,下一个访问该文件的人是否会拿起其他人的Cookie?)
现在,我们来说说缓存代码Cache-Control "max-age=7200, proxy-revalidate"
。
Q.2。就代理服务器上的cookie缓存而言,有什么区别?
现在我有一个关于实际设置 cookie的文件的问题(如Javascript或PHP)。 Q.3。访问这些类型的文件时,Cookie是否会被缓存在代理服务器上?或者缓存与静态文件相同?
发布于 2018-05-23 21:07:33
它取决于代理和Vary
响应头。通常,代理不会缓存对具有Cookie
标头的请求的响应。但是,这并不能保证。
当你使用Cache-Control
指令指定头时public
,你需要代理在不同客户端之间共享缓存。这大概不是你的意图,所以你应该指定private
。请参阅:http://www.mnot.net/cache_docs/#CACHE-CONTROL
就代理服务器上的cookie缓存而言,有什么区别?
不是真的。它所做的只是告诉代理它不应该从一个陈旧的缓存中提供服务。它不会影响缓存的控制方式。
访问这些类型的文件时,Cookie是否会被缓存在代理服务器上?或者缓存与静态文件相同?
对于http级别的软件(例如代理),静态和动态内容没有区别。Cookies仅仅是与请求(Cookie
标题)一起发送或与响应(Set-Cookie
标题)一起发送的http标题,
如果你在浏览器中设置cookie(通过Javascript或从服务器端通过Set-Cookie
标头),浏览器将发回cookie并将所有后续请求发送到同一个域。它通过Cookie
在请求中添加一个头来完成。
编辑:
我确实希望将我的实际文件缓存在代理上,而不是个人用户的Cookie。我该怎么做呢?
你需要避免缓存任何响应:
Set-Cookie
标题(因为这会被代理缓存)Cookie
头的内容决定渲染的内容(例如,打印“欢迎回来,John Doe”或其他自定义)你将如何做到这一点取决于你的后端技术。这是你的应用程序知道Cookie
头是否对响应有意义或者响应是否可能包含Set-Cookie
头。
在我使用的应用程序框架中,有一个用于设置按截止日期缓存的标头的功能。如果我在相同的请求访问cookie中调用该cookie,则会出现错误。这确保我不会不小心要求代理缓存私人内容。你需要在应用程序中实现类似的逻辑。
或者,你可以配置边缘级代理来执行相同的操作。这通常是在你完全不控制应用程序的情况下完成的。
如果我有使用头部缓存控制“max-age = 604800,public”的文件,是否将任何请求Cookie(Cookie)或响应Cookie(Set-Cookie)传输到另一个用户的计算机(因为它位于缓存中)?或者只会为个人用户浏览而缓存?
https://stackoverflow.com/questions/-100008559
复制相似问题