Ajax请求被缓存的几种处理方式
我们都知道IE会针对ajax请求的地址缓存请求结果,直到缓存过期之前,针对相同地址发出的请求,只有第一次会请求会真正发送到服务端.在某种情况下,这种缓存机制确实能提高web的响应速度,但是有时候并不是我们需要的,有时候我们需要获取即时信息,那么有哪几种方式来解决这个问题呢,下面列举了几种解决方案!
1. 通过URL添加后缀的方式
这种方式是我们大家都会使用的技巧,大多人都知道
例如:
本来请求的地址是: /home/action?
加查询参数后缀后:/home/action?ran=Match.Random();
后缀查询参数变量可以自定义,只需要每次都变化即可!
2. 通过Jquery的Ajax API设置相关属性(代码中标红处)
<script type="text/javascript">
var LoadTime = function () {$.ajaxSetup({ cache: false });
$.ajax({url: '@Url.Action("currTime")',
success: function (result) {
$("#currTime").html(result);
}})}</script>
我们使用fiddler抓取url请求,会发现此种方式与第一种解决方案类似,也是添加后缀的方式,如图:
3. 通过定制响应(此处参考http://www.cnblogs.com/artech/archive/2013/01/03/cache-4-ie.html)
我们都知道http请求头重包请求的相关属性,此种方式通过控制消息头中的Cache-Control包头,并将其设置为”No-Cache”,这样只是浏览器不对结果缓存.
那么如何达到上述目的呢?
首先,我们定义一个名为NoCacheAttribute的ActionFilter.在实现的OnActionExecuted方法中,我们调用当前HttpResponse的SetCacheability方法将缓存选项设置为NoCache.将该属性应用到方法.然后运行我们的程序
先看NoCacheAttribute的定义:
public class NoCacheAttribute:FilterAttribute,IActionFilter{public void OnActionExecuted(ActionExecutedContext filterContext){filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);}public void OnActionExecuting(ActionExecutingContext filterContext){//throw new NotImplementedException();
}}将属性应用到方法
[NoCache]public string CurrTime() {return DateTime.Now.ToLongTimeString();
}
5种常见的并发模型
MAT(Memory Analyzer tool)使用
springboot jar 启动参数的配置 linux Xms Xmx PermSize MaxPermSize
mysql 多个字段排序 时的规则 一看就懂
Hbase常用命令
Spring 注解参数 注解类
mybatis plus 集合分页插件
使用IDEA进行远程调试
Elasticsearch 中为什么会有大量文档插入后变成 deleted?
- 最新文章
-
FastAdmin 开源后台项目的愿景
GitHubclone切换源码分支版本:
tp5.0 thinkphp5 自定义命令行详解
[深入浅出Cocoa]iOS网络编程之NSStream
[深入浅出Cocoa]Block编程值得注意的那些事儿
[深入浅出Cocoa]iOS网络编程之CFNetwork
八一八招聘的那些事儿
nginx 常用命令
String 引用传递还是值传递 String到底是什么
什么是内存屏障?
- 热门文章
-
java enum枚举类的用法以及高级玩法
nacos 1.3.2 初次下载解压运行报错 DB.NUM IS NULL
内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)
监听JAVA从后台发起的http https 请求 java启动参数
并发和并行
protobuf 编译器使用 springboot 集成
Spring 事务基础以及传播特性
HBase中使用过滤器筛选数据
Springboot+Flink1.12.1通过Table API / Flink SQL读取HBase2.4.0
java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
Copyright © 2020-2023
润新知