前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端基础-Ajax缓存问题

前端基础-Ajax缓存问题

作者头像
cwl_java
发布2020-03-26 16:20:21
1K0
发布2020-03-26 16:20:21
举报
文章被收录于专栏:cwl_Javacwl_Java

第4章 缓存问题

4.1 缓存的产生

以上一节的案例为模板,使用IE9以下版本浏览器测试,有缓存问题;

原因: 在Ajax的get请求中,如果运行在IE内核的浏览器下, 其如果向同一个url发送多次请求时,就会产生所谓的缓存问题。 缓存问题最早设计初衷是为了加快应用程序的访问速度, 但是其会影响Ajax实时的获取服务器端的数据。

4.2 客户端解决缓存问题

产生缓存的问题就是 我们的客户端向同一个 url 发送了多次请求; 如果我们每次请求的url不同,那么,缓存问题就不会存在了;

我们可以在请求地址的后面加上一个无意义的参数,参数值使用随机数即可, 那么每次请求都会产生随机数,URL就会不同,缓存问题就被解决了;

Math.random():返回 0–1 之间的随机数,包括 0 但不包括 1;

修改代码如下:

var url = '03-1.php?names='+inp.value+'&_='+Math.random();
xhr.open('get',url);

但是,随机数虽然解决了问题,但是,我们不能保证每次生成的随机数都不一样; 也就是说,使用随机数存在一定的隐患;

new Date().getTime() : 获取当前时间的毫秒时间戳 修改代码如下:

var url = '03-1.php?names='+inp.value+'&_='+new Date().getTime();
xhr.open('get',url);

4.3 设置响应头禁用客户端缓存

服务器端在相应客户端请求时,可以设置相应头详细,如: header(‘Content-type:text/html; charset=utf-8’) :告诉客户端浏览器,使用utf-8的编码格式解析html页面信息。

设置不缓存的响应头标识即可:

//告诉客户端浏览器不要缓存数据
res.setHeader('Cache-Control','no-cache');
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第4章 缓存问题
    • 4.1 缓存的产生
      • 4.2 客户端解决缓存问题
        • 4.3 设置响应头禁用客户端缓存
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档