在默认情况下,IE会针对请求地址缓存Ajax请求的结果。换句话说,在缓存过期之前,针对相同地址发起的多个Ajax请求,只有第一次会真正发送到服务端。在某些情况下,这种默认的缓存机制并不是我们希望的(比如获取实时数据),这篇文章就来简单地讨论这个问题,以及介绍几种解决方案。
目录
一、问题重现
二、通过为URL地址添加后缀的方式解决问题
三、通过JQuery的Ajax设置解决问题
四、通过定制响应解决问题
一、问题重现
我们通过一个ASP.NET MVC应用来重现IE针对Ajax请求结果的缓存。在一个空ASP.NET MVC应用中我们定义了如下一个默认的HomeController,其中包含一个返回当前时间的Action方法GetCurrentTime。
默认Action方法Index对应的View定义如下。我们每隔5秒钟利用JQuery的方法以Ajax的方式调用GetCurrentTime操作,并将返回的结果显示出来。
采用不同的浏览器运行该程序会得到不同的输出结果,如下图所示,Chrome浏览器中能够显示出实时时间,但是在IE中显示的时间都是相同的。
二、通过为URL地址添加后缀的方式解决问题
由于IE针对Ajax请求的返回的结果是根据请求地址进行缓存的,所以如果不希望这个缓存机制生效,我们可以在每次请求时为请求地址添加不同的后缀来解决这个问题。针对这个例子,我们通过如下的代码为请求地址添加一个基于当前时间的查询字符串,再次运行程序后IE中将会显示实时的时间。
看了 aspnetpager分页控件的url分页的情况下根据查询结果动态分页的例子 也照着做了一下,大体上的思路是这样子的
点击查询按钮时
protected void ImageButton1_Click1(object sender, ImageClickEventArgs e)
{
StringBuilder sb = new StringBuilder();
sb.Append("UserLists.aspx?Name=" + txtName.Text);
sb.Append("&Sex=" + ddlSex.SelectedValue); //根据输入的值和选择的条件拼接Url
Response.Redirect(sb.ToString());
}
在Page_Load中 :
protected void Page_Load(object sender, EventArgs e)
{
//if (!IsPostBack)
//{
// BindType();
//}
if(Request["Name"] !=null && Request["Name"] != "")
{
str.Append("UserName like '%");
str.Append(Request["Name"]+"%'");
}
if (Request["Sex"] !=null && Request["Sex"]!="")
{
str.Append(" and UserSex= ");
str.Append(Request["Sex"]);
}
AspNetPager1.RecordCount = GetRecordCount(str.ToString()); //根据查询条件查询出总的记录条数
}
由于是url分页 所以不用绑定数据,直接在AspNetPager1_PageChanging 中绑定数据
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
AspNetPager1.CurrentPageIndex = e.NewPageIndex;
int cpage = 0;
if (Request.QueryString["page"] != null)
{
cpage = Convert.ToInt32(Request.QueryString["page"].ToString());
}
else
{
cpage = 1;
}
int rowscount = 0;
txtName.Text = Request["Name"];
ddlSex.SelectedValue = Request["Sex"]; //显示查询条件
GridView1.DataSource = news(str.ToString(), "UserID", cpage, 10, out rowscount);
GridView1.DataBind();
}
本文链接
Visual Studio 2012
Visual Studio Express 2012 for Web
与 的Visual Studio 2010 Visual Studio Web发布更新
与 的Visual Web Developer 2010 Express Visual Studio Web发布更新
您可以部署到任何以下目标:
对于承载提供程序。
对于在开发计算机上的IIS作为一个测试环境。
到公司的内部网络上的服务器。
使用 发布 Web 向导,若要配置 Web 应用程序项目的部署在Visual Studio中,可以创建一个或多个 发布配置文件。 发布配置文件中指定要部署到的服务器,必需的凭据登录到服务器,部署的数据库和其他部署选项。 当您准备好发布时,可以选择要使用并单击 发布 按钮在向导或在 Web一键式发布 工具栏的配置文件。
部署网站通常需要除了创建配置文件之外的其他准备工作。 本主题不包括有关可能需要执行的其他任务的信息。 例如,指定生成和合并选项在 打包/发布 Web 选项,不在发布配置文件。
创建发布配置文件许多宿主提供程序提供可用于简化创建发布配置文件处理的一个.publishsettings文件。 如果使用.publishsettings文件,请确保您具有最新版本,则此开始之前。 (例如,因此,如果您最初创建了一个帐户,不用SQL Server数据库稍后添加的代码,您必须下载该.publishsettings的最新版本,以确保它包含连接字符串需要。)
创建发布配置文件在 解决方案资源管理器,请右击该项目并选择 发布 打开 发布 Web 向导。
如果尚未创建任何配置文件,该向导在 配置文件 选项卡中打开。 否则,它会 预览 选项卡中打开。 在这种情况下,创建一个新的配置文件必须先单击 配置文件 选项。
注意到 配置文件 选项的 管理配置文件 按钮。 在创建了一个配置文件之后,可以使用此按钮重命名或删除其重命名为。
执行以下过程之一,具体取决于您是否具有一个.publishsettings文件:
通过导入.publishsettings文件创建配置文件创建配置文件,而不.publishsettings文件单击“导入”。
导入发布设置 对话框打开。
选择.publishsettings文件,然后单击 打开。
在的 选择或导入一个发布配置文件 下拉列表中,选择 <New …>,然后输入一个名称该配置文件在 新建配置文件 对话框。
最新技术文章: 
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!