2

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

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

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

或者

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

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

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

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

4

3 回答 3

2

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

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

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

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

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

于 2009-12-15T21:10:28.060 回答
1

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

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

于 2009-12-15T18:20:07.700 回答
-1

有一个恒定的 URI?

于 2009-12-15T18:18:50.060 回答