怎么判断缓存是否是最新的
1、资源过期通过 Cache-Control首部和expires首部,原始服务器可以对资源定义其保质期。在保质期之内,缓存就认为该资源是新鲜的,可以直接传回给客户端,如果过期那么就需要进行再验证。

4、服务器再验证资源过期了怎么办?再验证。怎么再验证?为什么要再验证?当缓存中的资源过期了以后,并不代表着这个资源真正的过期了,这个资源服务器有可能在这段时间内没有进行过变更。所以为了验证已经过期的资源是否真的不同了,就要进行再验证。如果再验证显示资源发生了变化,那么缓存就会获取一份新的资源副本。如果再验证显示资源没有发生变化,那么缓存就只获取新的首部,包括一个新的过期日期并对缓存中信息进行更新。

6、如何进行缓存验证?http可以使用条件方法高效的再验证。协议允许缓存向服务器发送一条条件GET,如果资源发生改变,则只返回相关报头。如果资源发生了改懈吡赜痖变,则在相应报文中直接返回对应的资源对象。HTTP中定义了五个条件请求首部,其中If-Modified-Since和If-None-Match两个首部了。If-Modified-Since:如果从指定日期之后资源被修改过了,那么就返回新的资源,可以与Last-Modified首部配合使用If-None-Match:服务器可以为每一个资源定义一个特定的标签,如果说进行再验证的副本资源的标签与当前服务器上的标签不同,则返回新的资源。

8、有些情况下仅仅使用日期验证是不够的例如:有些文档可能会进行周期性的重写,但实际上并没有发生变化。有些文档发生了变化,但是这些变化并不重要,不需要缓存对其进行更新等等。遇到这种情况,就亟冁雇乏需要使用ETag和 If-None-Match进行在验证了。可以把实体标签比喻成资源的版本号,当进行在验证的时候,就把缓存中的ETAG和服务器中资源的ETAG进行比较,看是否满足要求,如果不匹配,那么就回送新的资源。If-None-Match首部可以包含几个ETag,告诉服务器缓存中已经存在这些实体了。例如:If-None-Match:“v1.0”,“v1.1”,“v1.2

10、什么时候使用实体标签和最近修改日期呢?如果服务器回送一个ETag,客户端就必须使用实体标签验证器了,如果服务器回送了一个Last-Modified值,客户端就可以使用 If-Modified-Since验证。如果都提供了的话,那么就都可以使用了。除非HTTP/1.1原始服务器无法生成实体标签验证器,否则就应该发送一个出去。

11、以上就是小编带给大家的怎么判断缓存是否是最新的的关键所在,希望大家可以喜欢,如果喜欢的话可以点赞哦,也可以发表自己的看法