location.reload()与location.reload(true)没有区别么

reload() 方法用于重新加载当前文档。
如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果文档已改变,reload() 会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。

我们都知道客户端浏览器是有缓存的,里面存放之前访问过的一些网页文件。
其实缓存里存储的不只是网页文件,还有服务器发过来的该文件的最后服务器修改时间。
If-Modified-Since是标准的HTTP请求头标签,在发送HTTP请求时,把浏览器端缓存页面的最后修改时 间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。
如果时间一致,那么返回HTTP状态码304(不返回文件内容),客户端接到之后,就直接把本地缓存文 件显示到浏览器中。
如果时间不一致,就返回HTTP状态码200和新的文件内容,客户端接到之后,会丢弃旧文件,把新文件 缓存起来,并显示到浏览器中。

我们知道JSP页面最后都必须编译成HTML文件,你的JSP页面
时间 每次请求的都不一样 ,等于修改了文件
所以缓存和服务器的文件的修改时间是不一致的 ,就会重新刷新了
追问
有点明白。可这样的话,location.reload()false与(true)在“网页执行结果”上还有区别么?
如果网页文件没修改,运行结果不变,这没什么好说的,可是文件修改了,location.reload()也重新加载,文件运行结果是最新的结果,这和用(true)运行的结果是一样。

还有location.reload()要想从缓存里读取文件,只能是静态文件吧。
追答
loaction.reload(false)和location.reload(true)有差别啊,一个是先判断页面有没修改,有的话就从服务器下载页面,没有就直接从缓存里拿(这个会提升响应性能)
而把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,直接从服务器上重新下载该文档。
如果每次请求页面都修改,那结果是一样的。
你说的静态文件,可以那么理解吧。、

猜你喜欢

转载自blog.csdn.net/m_jack/article/details/80749585