2010-12-12 74 views
2

我很好奇其他开发人员如何协调http://www.w3.org/DesignIssues/Axioms.html#opaque在网页缓存的上下文中。我更喜欢Rails的基于我想要的格式(即.json或.xml)后缀资源请求的方法,而不是依赖于接受头,尽管它不是URI不透明。URI公理URI不透明与缓存

同样的问题与XHR的头相比。如果不添加查询参数以将其与标准HTTP请求区分开来,则必须禁用缓存。

我个人认为URI不透明的最纯粹的解释可能比实际更具学术性。意见?

+1

URL不透明不是学术;它可以防止第三方对您的网址做出太多假设。如果他们这样做了,你最终必须向后弯腰,以确保你的URL符合谷歌,雅虎,各种代理缓存,各种浏览器等的做法。 – 2011-02-03 00:13:05

回答

3

URI的格式与缓存功能无关,只是注意到具有查询参数的请求在默认情况下不可缓存。关于GET请求的缓存能力的一切都由服务器响应中的Cache-Control,Expires和Last-Modified(用于启发式缓存)标头驱动,并且这些与资源是动态还是静态无关生成(或者说,你的浏览器不关心,并且不能区分它们)。

URL不透明是为了促进REST的主要原则之一,即服务应该是超媒体驱动的,而且客户端应该只是“知道”几个众所周知的入口点URL,并且到处都是否则通过导航链接和表单(或他们的API等价物)。

+1

同意 - 我看到的问题是,这是不可能的创建一个响应不同接受头(即HTML,XML,JSON)可缓存的URI,因为在所有情况下URI都是相同的。 – aceofspades 2010-12-26 15:52:22

+1

实际上,并非如此:您可以在服务器响应中设置'Vary:Accept',从而创建多个缓存“变体”的概念。这实际上可以让您为同一个URI有多个缓存条目,并将正确的一个条目提供给正确的客户端(基于客户端的Accept头,在这种情况下)。 – 2011-03-11 12:59:56