学习
实践
活动
专区
工具
TVP
写文章

注意IE下Ajax Get缓存问题

在前端项目开发中,使用get请求时,一定要考虑到 IE浏览器缓存问题。。。 起源: ​ 常见ajax请求过一次以后,以后相同urlget请求会存在下面这种情况: 第一种情况:有时返回304,有时返回200; 第二种情况:有时无论后台数据是否变化始终返回304,有时却始终返回 禁止浏览器缓存常用方法: 1. 在get请求URL 参数后面加时间戳或者随机数 $.ajax({ url: ‘http://localhost/api/list’, type: ‘get’, data: { 用post请求替代get请求 结果: 有其他方式解决现场尝试其他方式解决,一是因为这种做法不符合RESTful API设计,二是因为这种方式同样会每次请求服务器,可能会没有利用到浏览器自带缓存功能,但是可以解决这个问题

35220

前端基础-Ajax缓存问题

第4章 缓存问题 4.1 缓存产生 以上一节案例为模板,使用IE9以下版本浏览器测试,有缓存问题; 原因: 在Ajaxget请求中,如果运行在IE内核浏览器下, 其如果向同一个url发送多次请求时 ,就会产生所谓缓存问题缓存问题最早设计初衷是为了加快应用程序访问速度, 但是其会影响Ajax实时获取服务器端数据。 4.2 客户端解决缓存问题 产生缓存问题就是 我们客户端向同一个 url 发送了多次请求; 如果我们每次请求url不同,那么,缓存问题就不会存在了; 我们可以在请求地址后面加上一个无意义参数 names='+inp.value+'&_='+Math.random(); xhr.open('get',url); 但是,随机数虽然解决了问题,但是,我们不能保证每次生成随机数都不一样; 也就是说

79210
  • 广告
    关闭

    2023新春采购节

    领8888元新春采购礼包,抢爆款2核2G云服务器95元/年起,个人开发者加享折上折

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ajax 使用 与 缓存问题

    +new Date();,[总之就是使每次访问URL字符串不一样]   设计WEB页面的时候 也应该遵守这个原则 2:一.谈AjaxGet和Post区别 Get方式: 用get方式可传送简单数据 另外最重要一点是,它会被客户端浏览器缓存起来,那么,别人就可以从浏览器历史记录中,读取到此客户数据,比如帐号和密码等。因此,在某些情况下,get方法会带来严重安全性问题。 总之,GET方式传送数据量小,处理效率高,安全性低,会被缓存,而POST反之。 三:AJAX乱码问题   产生乱码原因:     1、xtmlhttp 返回数据默认字符编码是utf-8,如果客户端页面是gb2312或者其它编码数据就会产生乱码     2、post方法提交数据默认字符编码是 不缓存版: $.ajax({ type:"GET" url:'test.html', cache:false, dataType:"html",

    44420

    Ajax缓存处理

    缓存 浏览器一次请求需要从服务器获得许多css、img、js等相关文件,如果每次请求都把相关资源文件加载一次,对带宽、服务器资源、用户等待时间都有严重损耗,浏览器有做优化处理,就是把css、img 、js等文件在第一次请求成功后就在本地保留一个缓存备份,后续每次请辞u就在本身获得相关缓存资源文件就可以了,可以明显地加快用户访问速度。 浏览器对动态程序文件缓存处理解决: 给请求地址设置随机数【推荐】; 给动态程序设置header头信息,禁止浏览器对其缓存。 给请求地址设置随机数 <! DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax缓存处理</title function f1(){ var xhr = new XMLHttpRequest(); xhr.open('get

    43520

    谈谈IE针对Ajax请求结果缓存

    在默认情况下,IE会针对请求地址缓存Ajax请求结果。换句话说,在缓存过期之前,针对相同地址发起多个Ajax请求,只有第一次会真正发送到服务端。 目录 一、问题重现 二、通过为URL地址添加后缀方式解决问题 三、通过JQueryAjax设置解决问题 四、通过定制响应解决问题 一、问题重现 我们通过一个ASP.NET MVC应用来重现IE针对Ajax请求结果缓存。 二、通过为URL地址添加后缀方式解决问题 由于IE针对Ajax请求返回结果是根据请求地址进行缓存,所以如果不希望这个缓存机制生效,我们可以在每次请求时为请求地址添加不同后缀来解决这个问题。 设置解决问题 实际上jQuery具有针对这个Ajax设置,我们只需要按照如下方式调用$.ajaxSetup方法禁止掉Ajaz缓存机制。

    57760

    第109天:Ajax请求GET和POST区别

    一、Ajax请求GET和POST区别   1.使用Get请求时,参数在URL中显示,而使用Post方式,则不会显示出来   2.使用Get请求发送数据量小,Post请求发送数据量大   3.get请求需注意缓存问题 ,post请求不需担心这个问题 Get方式:   用get方式可传送简单数据,但大小一般限制在1KB下,数据追加到url中发送(httpheader传送),也就是说,浏览器将各个表单字段元素及其数据按照 另外最重要一点是,它会被客户端浏览器缓存起来,那么,别人就可以从浏览器历史记录中,读取到此客户数据,比如帐号和密码等。因此,在某些情况下,get方法会带来严重安全性问题。 一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题 三、AJAX乱码问题   产生乱码原因:     1、xmlhttp 返回数据默认字符编码是utf-8,如果客户端页面是gb2312 2、请求结果无持续性副作用。     3、收集数据及HTML表单内输入字段名称总长不超过1024个字符。 五、案例  1、HTML代码(原生Ajax代码) 1 <!

    80420

    go get超时网络问题

    问题主要出现在隐藏网络代理上 公司更新了安全软件后,go get一直超时,出现如下问题: go: git.code.oa.com/trpc-go/trpc-go@v0.5.1 requires go.uber.org /atomic@v1.6.0: Get https://goproxy.cn/go.uber.org/atomic/@v/v1.6.0.mod: dial tcp 139.215.131.222:443 : i/o timeout 可以肯定是网络问题,但是排查网络ping都是ok,也能越“墙”;go env设置也是ok: GO111MODULE="on" GOPROXY="https://goproxy.cn ,direct" 但是使用如下命令存在问题,无法正确获得版本信息: GO111MODULE=on GOPROXY=https://goproxy.cn,direct go list -m -json - v0.3.1", "v0.3.2", "v0.3.3", "v0.3.4", "v0.3.5" ], "Time": "2020-12-08T00:13:44Z" } 排查一圈发现公司安全软件默认给网络加了代理

    1K30

    WordPress评论ajax动态加载,解决静态缓存下评论不更新问题

    这是一个历史遗留问题,自从博客部署了 PHP 纯静态缓存之后,所有页面都是 html 静态内容了,而且在七牛 CDN 静态分离之后,速度更是达到极致! ? 其中为了解决用户无法看到最新回复问题,我也想了多个办法,比如成功提交评论就会删除该页缓存、右下角集成清理缓存按钮等。 那么我之前写ajax 清理缓存以及评论删除缓存失去了效果,因为只能删除本地 html 缓存,而 CDN 节点缓存百度并未提供 API 控制接口,所以用户看到还是缓存内容! 当然,不是强迫症的话,直接关闭百度页面缓存就可以了!但这只是逃避问题,而没有解决问题!所以,本文就分享一下,强迫症是如何解决这个非必须问题。 下面开始分享代码: /* 评论ajax获取函数 */ function Ajax_Comments(){     $.ajax({         type: "GET",         url: ajax_url

    1.2K60

    Ajaxget与post区别,什么时候使用post?

    get和post在HTTP中都代表着请求数据,其中get请求相对来说更简单、快速,效率高些   get相对post安全性低   get缓存,post没有   get体积小,post可以无限大    geturl参数可见,post不可见   get只接受ASCII字符参数数据类型,post没有限制   get请求参数会保留历史记录,post中参数不会保留   get会被浏览器主动catch,post 不会,需要手动设置   get在浏览器回退时无害,post会再次提交请求   post一般用于修改服务器上资源,对所发送信息没有限制。 无法使用缓存文件(更新服务器上文件或数据库)   2. 向服务器发送大量数据(POST 没有数据量限制)   3. 发送包含未知字符用户输入时,POST 比 GET 更稳定也更可靠

    10630

    ajax嵌套ajax 可能出现问题 解决办法

    ajax由于他异步特性 在第一次请求中循环中嵌套第二个ajax会数据会读不出来 第一种 描述:如果条件许可,把两次请求都放在服务端处理掉一起发回来,这些就在客户端只有一次ajax了 优点:代码放在服务端 ,安全性比较,且服务端处理速度较快 缺点:可能请求数据格式是json,这样在服务端处理JSON数据还需要对JSON进行反序列化,这样就比较麻烦 第二种 描述:是我第一次解决这个问题时候用比较蠢办法 ajax默认async是为ture,当async: true 时,ajax请求是异步。 但是其中有个问题ajax请求和其后面的操作是异步执行,那么当页面还未执行完,就可能已经执行了 ajax请求后面的操作。 当async:false时,ajax请求为同步,这时Ajax请求将整个浏览器锁死,直到请求结束 优点:可以按照逻辑顺序正常写代码 缺点:同步时整个页面是被锁死

    1.3K20

    php解决redis缓存雪崩,缓存穿透,缓存击穿问题

    一:前言 设计一个缓存系统,不得不要考虑问题就是:缓存穿透、缓存击穿与失效时雪崩效应。 解决方案 有很多种方法可以有效地解决缓存穿透问题,最常见则是采用布隆过滤器,将所有可能存在数据哈希到一个足够大bitmap中,一个一定不存在数据会被 这个bitmap拦截掉,从而避免了对底层存储系统查询压力 这个时候,需要考虑一个问题缓存被“击穿”问题,这个和缓存雪崩区别在于这里针对某一key缓存,前者则是很多key。 key,当操作返回成功时,再进行load db操作并回设缓存;否则,就重试整个get缓存方法。 最后,对于缓存系统常见缓存满了和数据丢失问题,需要根据具体业务分析,通常我们采用LRU策略处理溢出,RedisRDB和AOF持久化策略来保证一定情况下数据安全。

    9640

    Vue 入口缓存问题

    关于 web 缓存策略,推荐这篇文章:Http 缓存机制 在开发时候经常遇到一个问题,我们根据版本号去控制缓存问题,当我们发布新版本,使用心得版本号时候,发现 html 里面引用版本号却是旧版本号 ,原来是该 html 文件被缓存了,很多时候我们设置禁止 html 文件被缓存,但依然会出现被缓存情况。 ,我们页面依然被缓存了? ,但是 html 文件里面引用依然是旧 css 和 js 文件 一旦我们使用了全量更新,也就是每次发版本之前会干掉之前 js 和 css 文件,那么index.html会无法加载之前js,css 因为服务器缓存机制,旧css和js并不会被立即删除,这种情况下, 需要配合服务器来设置缓存,以nginx为例 location / { root /home/www/test/dist;

    14520

    ajax --- 解决ajax跨域请求导致session失效问题

    起因:http是无状态,因此我们通常需要用到cookie以及session来保存状态,session是在服务器端存储,会和cookie一起使用,设置了session之后,会发送给浏览器一个cookie ,这个cookie是session_id,当再次请求时候浏览器会将它发送给服务器,以此来找到对应session. 但是,我们实际使用时候通常会用到跨域,就是向不同域发起请求,但是默认情况下此时cookie是不会发送给服务器,此时就导致了丢失session_id,从而导致了session值为undefined 解决方案如下: 首先,前端页面发起ajax请求时,加上参数: withCredentials: true, 像这样 $.ajax({ type: url:'http://localhost Access-Control-Allow-Headers", "X-Requested-With"); res.header("Access-Control-Allow-Methods","PUT,POST,GET

    1.1K20

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 内容分发网络 CDN

      内容分发网络 CDN

      内容分发网络(CDN)通过将站点内容发布至遍布全国的海量加速节点,使用户可就近获取所需内容,避免网络拥堵、地域、运营商等因素带来的访问延迟问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券