高分求助:js缓存问题,急!

JavaScript017

高分求助:js缓存问题,急!,第1张

因为IE的缓存,使得我们在填入相同的值的时候总是使用IE缓存,为了解决这个问题一般可以用一下方法:

1:在ajax或者dwr提交的url后面加时间戳。

例如

http_request.onreadystatechange = funcName(函数名)

http_request.open("GET", url, true)

比如url是test .jsp

那么我们在它后面加上?time=new Date()

即url=test.jsp?time=new Date()

2 :在url后面加一个随机数。

。。。。。。。。。

url=test.jsp?number=Math.random()

因为时间和随即数是提交一次变一次,所以每次提交的都不是相同的,他就会当做一个新的请求去执行了

有时候在更改js文件后,页面并没有及时显示出来,可能由于修改的文件不对,或者存在缓存问题。

面对的缓存问题有两个:

一是页面引入的js文件缓存。

二是js请求后台的缓存。

解决方法:

对于第一种情况,有两种处理方式:1、可以在页面引入的js文件后面增加日趋,如果不经常改动的文件,可以在每次改动后修改后缀。<script type="text/javascript" src="scripts/jquery-1.5.2.min.js?version=1"></script>

2、修改js文件的名字,如<script type="text/javascript" src="scripts/jquery.js"></script>

对于第二种情况,一般的处理方式是在请求的路径后面加上毫秒值,这样每次请求的路径都不一样,但是对于后台来说都是一样的,用来欺骗浏览器,进行实时请求,不调用浏览器缓存。

1、创建一个cache.js文件,前端页面,定义那些数据需要一次性拿到前端缓存,定义一个对象来保存这些数据。

2、前端页面,定义一个函数来调用后台接口获取数据,然后保存到本地缓存对象(dicts)中。

3、在主页面加载的时候调用这个方法一次性获取数据并缓存起来。这样,以后需要同样的数据,就直接从本地对象dicts中获取了。

4、后端Controller,定义一个接口,根据前端的请求,查询数据库(或查询服务器缓存,如下面例子中)获取数据返回给前端。