【技术心得】Last-Modified,Etag,Expire区别
【技术心得】Last-Modified,Etag,Expire区别
Last-Modified是什么Last-Modified是HttpHeader中的资源的最后修改时间,如果带有Last-Modified,下一次发送Http请求时,将会发生带If-modified-since的HttpHeader。如果没有过期,将会收到304的响应,从缓存中读取。
Etag是什么Etag是HttpHeader中代表资源的标签,在服务器端生成。如果带有Etag,下一次发送带Etag的请求,如果Etag没有变化将收到304的响应,从缓存中读取。
Etag在使用时要注意相同资源多台Web服务器的Etag的一致性。
?
Expire是什么Expire是HttpHeader中代表资源的过期时间,由服务器段设置。如果带有Expire,则在Expire过期前不会发生Http请求,直接从缓存中读取。用户强制F5例外。
Last-Modified,Etag,Expire混合通常Last-Modified,Etag,Expire是一起混合使用的,特别是Last-Modified和Expire经常一起使用,因为Expire可以让浏览器完全不发起Http请求,而当浏览器强制F5的时候又有Last-Modified,这样就很好的达到了浏览器段缓存的效果。
Etag和Expire一起使用时,先判断Expire,如果已经过期,再发起Http请求,如果Etag也过期,则返回200响应。如果Etag没有过期则返回304响应。
Last-Modified,Etag,Expires三个同时使用时。先判断Expire,然后发送Http请求,服务器先判断last-modified,再判断Etag,必须都没有过期,才能返回304响应。
?