首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >代理缓存 - 怎么样?

代理缓存 - 怎么样?
EN

Stack Overflow用户
提问于 2018-05-23 11:26:38
回答 1查看 0关注 0票数 0

我阅读了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是否会被缓存在代理服务器上?或者缓存与静态文件相同?

EN

回答 1

Stack Overflow用户

发布于 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)传输到另一个用户的计算机(因为它位于缓存中)?或者只会为个人用户浏览而缓存?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档