Junhc

岂止于博客

Servlet

Servlet工作原理解析

HTTP的请求头标签If-Modified-SinceLast-Modified

If-Modified-SinceLast-Modified都是标准的HTTP请求头标签,用于记录页面的最后修改时间。

发送方向

If-Modified-Since是由客户端发送给服务器的HTTP请求头标签。

Last-Modified是由服务器发送给客户端的HTTP请求头标签。

应用场景

在浏览器第一次请求某一个URL时,服务器返回的状态是200,内容是你请求的资源,
同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式如下
Last-Modified: Fri, 12 May 2006 18:53:33 GMT

客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报文头,
询问该时间之后文件是否有被修改过,格式如下
If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT

如果服务器端的资源没有变化,则时间一致,自动返回HTTP状态码304(Not Changed.)状态码,内容为空,客户端接到之后,就直接把本地缓存文件显示到浏览器中,这样就节省了传输数据量。

如果服务器端资源发生改变或者重启服务器时,时间不一致,就返回HTTP状态码200和新的文件内容,客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示到浏览器中。

以上操作可以保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

参考资料

Servlet工作原理解析