AJAX页面参数相同时只返回缓存的内容的解决办法

AJAX页面参数相同时只返回缓存的内容的解决办法

常利用AJAX写一些页面无刷新的内容获取页面,这种方式很快捷也很方便,但其中有一个问题,就是如果两次提交的参数相同时,返回的内容只返回上次获取的内容,如果我们在第一次修改了参数,第二次再次调用却会发现页面根本没有改变。这样的情况是是为AJAX获取时先检查本机缓存,如果本机缓存已有相同内容,则不访问远端服务器。这样的操作倒是可以提高速度和减少服务器压力。但带来的弊端也是显而易见的。

为了解决这个问题。我们必须在获取页加上一个额外的参数。比较简单的方法是用一个随机数。

例子如下

function idCheck() { //参数调用函数

var f = document.modify_form;

var book_num = f.book_num.value;

if(book_num=="") {

window.alert("图书编号不能为空");

f.book_num.focus();

return false;

}

//加一个随机数//////////////////////////////

var number = Math.random();

number = number * 1000000000;

number = Math.ceil(number);

//////////////////////////////////////////

send_request('get_book.php?book_num='+book_num+'&ranum='+number); // 后面的 “ranum=number”是额外加的

}

这样就可以避免相同参数页面返回同样内容的问题了。

还有一种方法为在被调用的页面中,加入代码,禁止本页面被缓存

htm网页

<metahttp-equiv="pragma"content="no-cache">

<metahttp-equiv="cache-control"content="no-cache,must-revalidate">

<metahttp-equiv="expires"content="wed,26feb199708:21:57gmt">

或者<metahttp-equiv="expires"content="0">

asp网页

response.expires=-1

response.expiresabsolute=now()-1

response.cachecontrol="no-cache"

php网页

header("expires:mon,26jul199705:00:00gmt");

header("cache-control:no-cache,must-revalidate");

header("pragma:no-cache");

jsp网页

response.addHeader("pragma", "no-cache");

response.addHeader("cache-control", "no-cache,must-revalidate");

response.addHeader("expires", "0");

时间: 2024-11-03 12:27:09

AJAX页面参数相同时只返回缓存的内容的解决办法的相关文章

JSF页面出错的时DataTable不能恢复原有值的解决办法

在使用JSF的时候,它的事件驱动模式是一个很好的开发方法,但是由于JSF 毕竟现在的版本才1.2,所以对于有些细节上面处理就不一定如人意了,一般来说 ,当JSF的页面验证有错或者有其它的错误的时候,我们以前输入的值会在渲染 页面的时候,恢复回来,也就是说,一个域我们绑定在后台的属性是一个int值 ,但是我们前台输入了"abcd",这个时候,后台在验证阶段就过不去了.然后 直接渲染页面,JSF 会把我们输入错误的abcd渲染出来.而不是把我们以前绑定 在后台的那个属性的值,取出来,这样也

BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法_javascript技巧

最近的一个项目 前台使用了 bootstrap.css + angularjs, 后台只处理数据(用的php,处理结果直接 json_encode($arr),非常爽).一直在Chrome的仿真机测试非常完美, 没有进行真机测试.完成后,到手机测试时傻了,左右滑动页面时,竟然出现了一个 空白的竖条(如下图所示).判断是margin-right 设置的长度所致,检查css,并没有相关代码.看来问题出现在了 bootstrap .虽然不影响 程序的使用,但是感觉非常别扭,一定要修复它. 检查页面,发

用ajax传递json到前台中文出现问号乱码问题的解决办法

我使用的Springmvc,在controller层传输一个json到前台,后台显示没问题,中文正常显示而到了前台 中文就变成了问号. 后来发现,因为在controller中返回json用了@ResponseBody,而spring源码中@ResponseBody 的实现类发现其默认的编码是 iso-8859-1,而项目用的编码为utf-8,所以传中文会出现乱码. 这里我使用了注解来解决: @RequestMapping(value="/echarts.do", produces =

Sqlserver2005附加数据库时出错提示操作系统错误5120的解决办法

问题描述 Sqlserver2005附加数据库时出错提示操作系统错误5120的解决办法 用的是2005数据库,数据库是从另一台机子上考来的 在附加时 报如下错: (http://img.ask.csdn.net/upload/201506/01/1433143611_783759.png) 解决方案 你把文件bright.mdf复制到d:data试试看.保证这个文件夹有足够的权限.

使用Android studio创建的AIDL编译时找不到自定义类的解决办法_Android

使用AS创建ADIL文件时AS会在main文件夹下给我们生成一个aidl文件夹和一个相同包名的包,通常我们会把所有和ADIL相关的类或文件放在这个包下,但是如果存在自定义的类时,程序编译时无法通过,提示找不到自定义的包.解决办法如下,在启动Module的build.gradle中加入如下代码: sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java', '

installshield制作的安装包卸载时提示重启动的原因以及解决办法

原文:installshield制作的安装包卸载时提示重启动的原因以及解决办法 有时候卸载installshield制作的安装包程序,卸载完会提示是否重启电脑以完成所有卸载,产生这个提示的常见原因有如下几种:1. 卸载时,程序正处于运行状态2. 卸载时,程序文件夹处于打开状态3. 卸载时,有文件被别的进程调用,或者在进程中,常见情况如dll在进程中 一般来说解决办法是针对第三种情况的,解决办法是卸载时强制杀进程,比如在OnMaintUIBefore或者OnUninstall里写上强制杀进程的代码

使用Android studio创建的AIDL编译时找不到自定义类的解决办法

使用AS创建ADIL文件时AS会在main文件夹下给我们生成一个aidl文件夹和一个相同包名的包,通常我们会把所有和ADIL相关的类或文件放在这个包下,但是如果存在自定义的类时,程序编译时无法通过,提示找不到自定义的包.解决办法如下,在启动Module的build.gradle中加入如下代码: sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java', '

Ajax页面缓存问题分析与解决办法

一.什么是Ajax缓存原理? Ajax在发送的数据成功后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求时,它会直接从缓存中把数据取出来,这是为了提高页面的响应速度和用户体验.当前这要求两次请求URL完全相同,包括参数.这个时候,浏览器就不会与服务器交互. 二.Ajax缓存的好处 这种设计使客户端对一些静态页面内容的请求,比如图片,css文件,js脚本等,变得更加快捷,提高了页面的响应速度,也节省了网络通信资源. 三.Ajax缓存的不足 Ajax缓存虽然有上述的

PHP中xajax库中文问题及提示返回XML文件无效的解决办法

xajax是PHP下一个非常好的ajax框架,虽然xajax自己说自己是一个库(Library),但是我觉得它更像一个框架(Framework).xajax是一个开源的 PHP 类库 它能够让你黏合HTML.CSS.Javascript和PHP,并可以结合Smarty模板系统使用. 在运用Xoops的Page模组的时候,发现其不能和中文正常工作,特别是不能和UTF-8编码的页面一起工作,昨天在利用这个实现DataGrid的时候发现完全不能正常工作了,一直报"the XML response th