许多浏览器为了能快速向用户展示所请求的页面,会把来自服务器端的页面存放在客户端的缓存中。如果用户多次请求访问服务器端的同一个网页,并且在客户端的缓存中已经存在该网页,那么浏览器只需要从缓存中获取该网页,而不需要请求访问远程服务器上的网页。
浏览器端的缓存技术适用于保存服务器端的静态页面,以及不包含敏感数据的网页。以下情形中,服务器往往不希望页面被客户端缓存:
1、网页包含随时会被更新的动态内容。因为如果浏览器向用户展示本地缓存中的网页,有可能展示的是过期的网页
2、网页中含有敏感数据,如特定用户的银行账户信息,或者电子邮件的内容。因为如果浏览器把网页保存到本地缓存中,有可能被其他未授权的用户访问到该网页。
服务器端的HttpServlet可以通过设置特定的HTTP响应头来禁止客户端缓存网页,以下示范代码中的response变量引用HttpServletResponse对象:
response.addHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Expires","0");