ajax2—解决缓存问题—php(28)

五、ajax快速入门

ajax代码:

Php程序:

六、发送数据

Ajax的get请求时,要发送的数据需要附加到url的后面

Ajax的post请求时,要发送的数据需要放到send方法的参数中

Ajax代码:

Php代码:

故意将请求的url写错,我们发现,即使用请求了一个不存在的url,那么ajax对象的状态码最终也会等于4,并且执行相应的语句,而我们希望如果请求的是一个错误页面,那么就不应该执行相应的语句

做一些相应的修改

利用ajax计算两个数的和

七、解决缓存问题

以上的问题:

将php中的加法改成减法

如果用之前的请求参数,发现仍然是加法,如果是新的请求参数就是减法运算。

解决方法1:  随机数

Math.random();

在url后面产生一个js随机数,让这次请求的url是唯一的,所以每次请求回来就是最新的数据

但是,我们知道,这种方法没有根本上解决缓存问题,它只是产生大量的缓存文件

还有一点:随机数并不能保证这个url是绝对唯一的

解决方法2:

时间

new Date().getTime();   //取得毫秒时间戳

以上这种方法直接将时间戳附加url后面,使当前url唯一,这种方法从执行上来讲,它永远是唯一的

但是,它仍然会在临时文件下,产生大量缓存文件。

解决方法3、  设置请求头

setRequestHeader("If-Modified-Since","0");

原理:利用ajax对象在发送http请求之前,设置了http请求头信息,表明当前要请求的资源最后修改时间是“0”,服务器拿到这个时间之后,会与服务器上的这个文件的最后修改时间进行比较,如果不同,那么返回最新执行结果。

这种方式,最后始终只有一个缓存文件。

 解决方法4、  设置响应头

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

利用php的header函数向响应头中写数据,写的是告诉客户端:不要对本次的结果进行缓存。

这种做法,可以从根本上解决缓存问题,不产生任何缓存文件。

例题:

校验用户名是否可以使用

时间: 2024-10-31 12:43:22

ajax2—解决缓存问题—php(28)的相关文章

内存模型是怎么解决缓存一致性的?

前言 在再有人问你Java内存模型是什么,就把这篇文章发给他.这篇文章中,我们介绍过关于Java内容模型的来龙去脉. 我们在文章中提到过,由于CPU和主存的处理速度上存在一定差别,为了匹配这种差距,提升计算机能力,人们在CPU和主存之间增加了多层高速缓存.每个CPU会有L1.L2甚至L3缓存,在多核计算机中会有多个CPU,那么就会存在多套缓存,那么这多套缓存之间的数据就可能出现不一致的现象.为了解决这个问题,有了内存模型.内存模型定义了共享内存系统中多线程程序读写操作行为的规范.通过这些规则来规

laravel 中 与前端的一些事5 之解决缓存问题:version

Version的主要目的就是解决浏览器的缓存问题,在这个方面,Elixir给出的解决方案很完美 应用场景:当我们的css或者js重新更新了,我们需要告诉浏览器我们不要缓存的css或js静态文件样式时,使用version 比较麻烦的方法就是在引入文件中直接插入版本代码: 一般我们都是在编译文件时就使用version()函数来生成一个有唯一版本号的编译后的css文件,存放在public/build/下面: 然后使用laravel的函数elixir()引入:

对于解决 缓存问题

最近测试发现,网路还有缓存,软件升级后,用公司的网下载还是之前的版本,不过最后发是网络有缓存问题. 解决办法是 : 在下载地址后面加上时间戳 就像拼 GET() 方式一样. 例如: var data=new Date().getTime(); window.load.href="../load/load.rar?"+data; 一搬缓存问题, 都是用加时间来解决的.

使用时间戳解决缓存问题

使用url访问服务器的时候,由于客户端使用人数比较多,需要每次访问前都设置清除缓存会很麻烦,加入时间戳,让系统认为每次访问都是新的请求,而不使用缓存数据. ///function ///解决浏览器缓存 ///url 访问地址参数function TimeStamp(Url){ var GetTimeStamp=new Date().getTime(); if(Url.indexOf("?")>-1){Url=Url+"×tamp="+GetTimeStamp

解决缓存雪崩的方案(转)

1,采用加锁计数,或者使用合理的队列数量来避免缓存失效时对数据库造成太大的压力.这种办法虽然能缓解数据库的压力,但是同时又降低了系统的吞吐量. 2,分析用户行为,尽量让失效时间点均匀分布.避免缓存雪崩的出现. 3,如果是因为某台缓存服务器宕机,可以考虑做主备,比如:redis主备,但是双缓存涉及到更新事务的问题,update可能读到脏数据,需要好好解决. 缓存预热单机web系统情况下比较简单. 解决思路: 1,直接写个缓存刷新页面,上线时手工操作下. 2,数据量不大,可以在WEB系统启动的时候加

Ajax解决缓存的5种方法

原文:http://www.ido321.com/129.html 1.在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“If-Modified-Since”,”0″). 2.在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“Cache-Control”,”no-cache”). 3.在URL后面加上一个随机数: “fresh=” + Math.random();. 4.在URL后面加上时间搓:”nowtime=” + new

记一次解决缓存不释放导致内存耗光问题

1 前言 通过脚本备份数据和系统,笔者遇到两项缓存过高不释放而导致内存使用过高问题,Zabbix截图如下, - 第一次是由每小时往挂载的Window共享里面存放备份文件引起 - 第二次是由每周备份系统过度地频繁读写文件系统引起缓存不释放引起 2 挂载Window共享备份引发的缓存问题 2.1 问题描述 挂载Window的共享成为Linux服务器的备份目录,发现备份后缓存过高,挂载范例如下, mount -t cifs -o username=user1%pwd1 //backupSer/back

布隆过滤器的方式解决缓存穿透问题

1.原理 布隆过滤器的巨大用处就是,能够迅速判断一个元素是否在一个集合中.因此他有如下三个使用场景: 网页爬虫对URL的去重,避免爬取相同的URL地址 反垃圾邮件,从数十亿个垃圾邮件列表中判断某邮箱是否垃圾邮箱(同理,垃圾短信) 缓存穿透,将所有可能存在的数据缓存放到布隆过滤器中,当黑客访问不存在的缓存时迅速返回避免缓存及DB挂掉. OK,接下来我们来谈谈布隆过滤器的原理 其内部维护一个全为0的bit数组,需要说明的是,布隆过滤器有一个误判率的概念,误判率越低,则数组越长,所占空间越大.误判率越

解决缓存不够无法接收全部数据和粘包问题

server程序如下: import socket sk=socket.socket() print(sk) address=('127.0.0.1',8888) sk.bind(address) sk.listen(3) ''' 服务器端不关闭,客户端输入exit后关闭,服务器接收下一个连接的内容,进行对话 ''' #方法一 # conn,addr=sk.accept() # print(conn) # while True: # data=conn.recv(1024) # if str(d