你知道If-Unmodified-Since在野外的任何实际用途吗?从描述中可以看出,这个标题旨在帮助避免脏写.即,只有在客户端可用的最后修改时间之后尚未修改此资源时才更新此资源.与If-Modified-Since不同,它似乎对缓存没有帮助.我错过了什么吗?
Vol*_*erK 33
您可以使用它,例如用于范围请求.
示例:您的客户端请求资源http://examp.le/foo?id = 3且Contents-length为4096但您的客户端仅请求前1024个字节.然后它可以(稍后)请求剩余的3072个字节,但如果资源同时发生变化则没有意义.
编辑:如果资源同时更改,您可能也不想更改/更新数据.例如,您请求客户记录并编辑某些内容.如果其他人在此期间更改了记录,则可能导致不一致.因此,使用if-unmodified-since(-I-retrieve-the-data)标头发送您的更新,如果记录已经更改,Web服务器将拒绝您的更新 - 您的客户端可以请求"冲突"数据.
edit2:因为你已经要求"任何实际使用If-Unmodified-Since in the wild":请参阅http://msdn.microsoft.com/en-us/library/dd179371.aspx#Subheading1.
假设您首先请求了Blob属性.现在你知道了内容类型和内容长度(也许你需要这种类型的分配).在发送第二个Get Blob请求之前,某人/某事可能会更改blob .如果将Last-Modified的值作为If-Unmodified-Since标头的值发送,则服务器将在blob发生更改时使用相应的错误代码进行响应.
它对于在一段时间内执行的多个请求很有用,但与单个未更改的资源有关.
例子:
范围请求.对第一个范围请求(或可能是初步HEAD)的响应包括Last-Modified标题.后续请求仅适用于该资源的相同版本.如果资源在我们开始范围请求序列和序列中间某个时间之间发生变化,我们希望重新开始.
乐观的并发控制.我们首先GET是一个资源,在客户端进行一些更改,并希望PUT更新资源.但是PUT,只要没有其他人在此期间更新它,我们只想要更新的资源.我们不想覆盖任何人的变化.如果事实证明有人在此期间更改了资源,我们又想GET再次尝试,尝试在客户端中重新应用更改(有点像git rebase),并再次尝试PUT更改资源.
| 归档时间: |
|
| 查看次数: |
5282 次 |
| 最近记录: |