【问题标题】:Session-ID and Browser-Caching => Are Browser intelligent enough to strip of SessID?会话 ID 和浏览器缓存 => 浏览器是否足够智能以去除 SessID?
【发布时间】:2010-12-15 01:52:06
【问题描述】:

我有一个大问题:请参阅下面的示例链接。我的应用程序当前将会话 ID 附加到所有“资源/链接”。我在 Firefox 缓存中偶然发现了这一点:

http://localhost:8080/jquery-ui-1.7.2.custom.css;jsessionid=A8483FBF3BB6DDA499E06210BE0D612C

我的大问题是,像上面的 URL 这样的 URL 是否会导致这样一个事实,即任何缓存 Header(我使用了几年的 Cache-Control)都会或多或少地变得无用,因为会话 ID 将使每个请求都是唯一的?

(==>我的意思是,在 30 分钟后分配一个新的 sessionID。缓存很可能只在这段时间内有效。在这段时间之后,将生成一个新的 Session ID,间接使所有客户端缓存的内容,其 url 中有 SessionID = url 更改,因为它现在有一个新的 sessionID。)

=> 浏览器是否智能地发现要缓存的资源是:

http://localhost:8080/jquery-ui-1.7.2.custom.css

而不是:

http://localhost:8080/jquery-ui-1.7.2.custom.css;jsessionid=A8483FBF3BB6DDA499E06210BE0D612C

或者 url 中的 sessionId 会导致浏览器或多或少禁用缓存?

非常感谢! 一月

【问题讨论】:

    标签: caching


    【解决方案1】:

    你是对的 - 浏览器不够智能,并且更改 URL 将非常有效地否定缓存。

    为什么一开始就有会话 ID?如果资源不依赖于会话,则从 URL 中删除会话 ID,这将解决您的问题。如果资源依赖于会话,那么您已经拥有了所需的一切,因为一个会话不应使用来自另一个会话的资源。

    【讨论】:

      【解决方案2】:

      这不是浏览器是否足够智能的问题。 W3 standard for HTTP 声明应该分别缓存不同的 URL。所以浏览器在观察完整的 URL 时是正确的,包括 GET 参数,例如缓存中的会话 ID。

      您不应将会话 ID 附加到任何静态的(例如您的样式表)。

      【讨论】:

      • 你好,本,感谢您的回答和链接。我用谷歌搜索,但 W3 文档没有出现。它是一个很好的文件,解释了一切,正是我正在寻找的。所以谢谢你的回答。
      • 我最近回答了这个问题:stackoverflow.com/questions/1674493/… 所以我有方便的链接:D
      猜你喜欢
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多