【问题标题】:Advantages of ETags verses updating URLETags 与更新 URL 相比的优势
【发布时间】:2010-12-26 22:19:05
【问题描述】:

ETag 允许浏览器执行条件 GET。只有当相关资源已被更改时,才需要重新下载该资源。但是,浏览器仍然需要等待服务器响应它的请求。

ETags 的替代方法是在指向资源的 URL 中引入令牌:

http://example.com/css/styles.css?token=134124134

http://example.com/css/134124134/styles.css

这两种方法都避免了重新下载未更改的资源。

但是,使用带有令牌的 URL 允许服务器在资源上设置一个远期到期标头。这节省了条件 GET 占用的往返行程 - 如果资源未更改,则指向它的 URL 将不会更改。

与带有令牌的 URL 相比,使用 ETag 有什么优势吗?

【问题讨论】:

标签: http caching etag


【解决方案1】:

我看到的只读资源的主要缺点是,如果我们都对所有静态资源采用这种方法,那么客户端缓存将开始填充各种过时的资源。

另外,想想所有会开始保存大量无用文件的中间缓存。

您正在使用这种方法与网络作斗争,如果它变得流行,那么就必须改变一些东西,因为它不是一个可扩展的解决方案。

是否有某种混合方法,您可以使用一组有限的令牌并将到期时间设置得足够小,以使旧的缓存资源在令牌被重用之前就到期?

Etags 也用于读写资源,在这种情况下,我怀疑令牌解决方案不起作用。

【讨论】:

    【解决方案2】:

    我认为最大的区别/潜在优势是配置; URL 设置必须在应用程序内进行配置/设置(例如,HTML 实际上必须包含该值)。 ETag 是为整个 Web 服务器配置的,无需修改 HTML 即可利用它们。

    此外,当指向的文件发生变化时,ETag 将(假设配置正确)发生变化;将令牌添加到 URL 将需要一些额外的“东西”来告诉它改变(编辑 HTML 的人或一些配置设置等)。

    【讨论】:

      【解决方案3】:

      有一个固定的 URI?

      【讨论】:

      • 我的 URI 更改是否重要?通过更改 URI,我是说文件的每个版本都是单独的资源。这有什么问题吗?
      • 取决于我猜是哪种资源:对于 CSS/JS,可能没那么重要。
      猜你喜欢
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 2012-05-17
      • 2016-07-04
      • 2011-03-13
      • 1970-01-01
      相关资源
      最近更新 更多