`

浏览器缓存url请求

阅读更多
最近遇到浏览器缓存url的问题,google了一把,学到不少东西,结合网上其他人文章拼凑一篇,供大家交流。
   
一 防止url被浏览器缓存
根据 HTTP 规范,GET 用于信息获取,而且应该是幂等的。也就是说,当使用相同的URL重复GET请求会返回预期的相同结果时,GET方法才是适用的。当对一个请求有副作用的时候(例如,提交数据注册新用户时),应该使用POST请求而不是GET。 所以浏览器会对GET请求做缓存处理。

解决办法:

1. GET请求URL后加随机数,让服务器认为不是相同的请求。
例 “http://www.example.com/index.php?class=aitcle&page=5&_t=” + new Date().getTime()
2. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“If-Modified-Since”,”0″)
3. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“Cache-Control”,”no-cache”);
4. 服务端响应请求时加 header(“Cache-Control: no-cache, must-revalidate”); (PHP)
5. 使用POST代替GET,浏览器不会对POST做缓存


二.防止jsp页面内容被缓存:
    防止JSP页面缓存为了防止浏览器缓存当前访问的JSP动态页面,可以采用如下的方式进行设置:
<%
// 将过期日期设置为一个过去时间
response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT");
// 设置 HTTP/1.1 no-cache 头
response.setHeader("Cache-Control", "no-store,no-cache,must-revalidate");
// 设置 IE 扩展 HTTP/1.1 no-cache headers, 用户自己添加
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
// 设置标准 HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");
%>

三.防止html页面被缓存(jsp也适用)
     禁止客户端缓存要在<head>中加入类似如下内容:
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">  
分享到:
评论

相关推荐

    一、浏览器渲染原理(进程、线程)http请求全过程-浏览器输入url整个过程

    简要来说,很多网站第二次访问能够秒开,是因为这些网站把很多资源都缓存在了本地,浏览器缓存直接使用本地副本来回应请求,而不会产生真实的网络请求,从而节省了时间。同时,DNS 数据也被浏览器缓存了,这又省去了...

    Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因

    一开始搞不懂为什么,网上查了资料,原因是防止浏览器缓存。 浏览器为了提高用户访问同一页面的速度,会对页面数据进行缓存。当url请求地址不变时, 有时候会导致浏览器不发送请求,直接从缓存中读取之前的数据。 ...

    浅谈Ajax请求与浏览器缓存

    在现代Web应用程序中,前端代码充斥着大量的Ajax请求,如果对于Ajax请求可以使用浏览器缓存,那么可以显著地减少网络请求,提高程序响应速度。 1. Ajax Request 使用jQuery框架可以很方便的进行Ajax请求,示例代码...

    ASP.NET性能优化之让浏览器缓存动态网页的方法

    OutputCache是针对所有访问服务器资源的用户,本篇要介绍的浏览器缓存则是针对单个用户,让浏览器在我们的控制下彻底不持续访问服务器上的动态内容,也就是我们要让浏览器变成我们的缓存机制中的一部分,在某些特定...

    后端请求缓存

    原创,高并发中用处非常大。JAVA版。...通过缓存过滤器实现.do的url请求数据的缓存,这样同一url请求,可以不用访问数据库,直接从缓存中取数据。 实现方式: 后端请求浏览器缓存 后端请求后端缓存

    两次请求相同的一个URL,会产生缓存问题。

    两次请求相同的一个URL,会产生缓存问题。 博文链接:https://weiye.iteye.com/blog/100470

    存储篇 1:浏览器缓存机制介绍与缓存策略剖析(1).md

    HTTP 请求,服务端处理完我们的请求之后,把目标数据放在 HTTP 响应里返回给客户端,拿到响应数据的浏览器就可以开始走一个渲染的流程。渲染完毕,页面便呈现给了用户,并时刻等待响应用户的操作(如下图所示)。 !...

    深度解析浏览器中输入URL后发生了什么

    • 第一步,浏览器会检查缓存中有没有这个域名对应的解析过的 IP 地址,如果有,解析结束。 浏览器中的缓存有时间空间限制。 • 查找操作系统的缓存中是否有这个域名对应的 DNS 解析结果。 在 Windows 系统中通过 C:...

    如何解决Ajax请求结果的缓存问题说明

    目录 一、问题重现 二、通过为URL地址添加后缀的方式解决问题 三、通过JQuery的Ajax设置解决问题 四、通过定制响应解决问题一、问题重现我们通过一个ASP.NET MVC应用来重现IE针对Ajax请求结果的缓存。在一个空ASP...

    防止页面url缓存中ajax中post请求的处理方法

    主要介绍了防止页面url缓存中ajax中post请求的处理方式的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

    解析浏览器端的AJAX缓存机制

    AJAX的缓存是由浏览器维持的,对于发向服务器的某个url,ajax仅在第一次请求时与服务器交互信息,之后的请求中,ajax不再向服务器提交请求,而是直接从缓存中提取数据。 有些情况下,我们需要每一次都从服务器得到...

    Ajax中浏览器的缓存问题解决方法

    每次清除缓存后,就会得到一个新的数据,所以归根到底就是浏览器缓存问题。纠结了很久,终于解决了,在这里总结一下。 我们都知道ajax能提高页面载入的速度主要的原因是通过ajax减少了重复数据的载入,也就是说在...

    Web应用安全:HTTP协议GET和POST的使用区别实验.pptx

    在GET请求中,查询字符串是在 GET 请求的 URL 中发送的 get方式请求头和请求体 2、请求参数可见性 index.php?content=这是get方式里面的一个字段的值 GET和POST使用区别 在POST请求中,查询字符串是在 POST 请求的 ...

    浅谈Ajax的缓存机制

    只要是URL相同的GET请求,浏览器会使用缓存(当然还要看服务器的Cache-Control/Expires/Last-Modified/ETag头的设置)。 只要是POST请求,浏览器都不会缓存。 Https的请求,浏览器不会缓存(绝大数情况如此,但是也有...

    IE下Ajax缓存问题的快速解决方法(get方式)

    折腾了半天,程序中使用jquery的load方法进行请求,很奇怪为啥第二次无法发送请求。百度了一把,谁知load是用get方式进行请求的,...在javascript发送的URL后加上t=Math.random() 例如这样:URL+”&”+”t=”+Math.rando

    06-浏览器问题-网络问题-个人课堂总结

    内容概要:从输入URL到页面加载的全过程、浏览器重绘与重排的区别、如何触发避免重排和重绘、304过程、浏览器的缓存机制 强制缓存 && 协商缓存、进程、线程和协程区别联系、网络问题、HTTP 和 HTTPS概念区别优缺点...

    在浏览器输入URL回车之后发生了什么?(超详细版)

    这篇笔记是我这两天看了数十篇文章总结出来的,所以相对全面一点,但由于我是做前端的,所以会比较重点分析浏览器渲染页面那一部分,至于其他部分我会罗列出关键词,感兴趣的可以自行查阅, 注意:本文的步骤是建立...

    http协议抓包

    甚至可以显示浏览器缓存和IE之间的交换信息。集成在Internet Explorer工具栏。[1] 只需要选择相应的网站,软件就可以对网站与IE之间的需求回复的通讯情况进行分析并在同一界面显示其相应日志记录。每一个HTTP记录都...

Global site tag (gtag.js) - Google Analytics