当前位置:首页 » 硬盘大全 » javascript的缓存机制
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

javascript的缓存机制

发布时间: 2023-07-05 08:50:07

‘壹’ iframe子页面访问过后相应js 缓存在浏览器,怎么不缓存

这两天遇到一个很奇怪的问题,一个页面嵌套了一个iframe页面,当这个页面提交后再次跳转到本页面时,原本iframe内的页面应该刷新数据的,结果在ie下面却没刷新(FF下没问题),必须手动F5或者新开一个浏览器标签页浏览才能刷新,否则在本页面的浏览器上按回车是没用的,查阅了很多资料,最后终于发现是iframe缓存机制在搞鬼,用以下方法即可解决:

<script type="text/JavaScript">
var randomnumber=Math.floor(Math.random()*100000)

document.write('
<iframe src="http://www.freedonation.com/hunger/hunger_thankyou.php3?randomnumber='+randomnumber+'" name="aframe" width="100%" height="400"></iframe>')

</script>

通过请求多加一个值为随机数的参数,这样浏览器认为每次请求的页面都是新的而保证了iframe页面每次都是重新加载的。

0


0

‘贰’ 如何让html页面不缓存,js永久缓存

当浏览不同Url时,浏览器会自动将当前访问的地址进行一次缓存;而第二次访问时着调用缓存下来的页面,从而达到页面快速加载(页面加载优化)的目的;
因此,我们可以给页面后面设定个不同的值,让页面保持没错访问的不同即可达到不缓存的目的了!
下面是个简单的示例:

复制代码 代码如下:
<script>
document.write("<script type='text/javascript' src='/js/test.js?"+Math.random();+"'></script>");
</script>

其他的类似,只需在地址后加上+Math.random()
注意:因为Math.random() 只能在Javascript 下起作用,故只能通过Javascript的调用才可以
最后加一个ajax也不让缓存的方法

复制代码 代码如下:
xmlHttp.open("GET", "ajax.asp?now=" + new Date().getTime(), true);

记得后面的now=" + new Date().getTime()是重点,需要带参数的。
希望本文所述对大家的javascript程序设计有所帮助。
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js , html , 页面 不缓存 javascript 缓存、javascript 清除缓存、javascript缓存数据、javascript 本地缓存、javascript 缓存机制,以便于您获取更多的相关知识。

‘叁’ 浏览器会缓存CDN上的javascript吗

浏览器有多种缓存,问者应该问的是 200 304 这类机制,并且不考虑manifest带来的影响,也不考虑用户使用ctrl+F5 (mac:command+R) 强制刷新
首先,浏览器检测某个静态文件的缓存是否到期,如果到期,发请求到服务器看文件是否已经被改变,若未改变,则返回304,不下载新的,如果改变,则返回200,并且下载新的;如果没有到期,直接使用缓存里面的。
所以浏览器缓存和请求到达的服务器(不论是否cdn,如果上cdn则到达其中一台)上文件是否变化,缓存时间是否到期有关,与服务器是否上cdn部署没有关系。

‘肆’ 能用JS或者前端的什么方法实现清除浏览器缓存吗

可以用JS实现清除浏览器缓存,解决方法如下:

1、在静态页面也就是以.html,.jsp,.aspx,.php结尾的文件中在<dead></head>中加入以下代码。


注意事项:

JavaScriptJavaScript基于对象和事件驱动并具有相对安全性的客户端脚本语言。也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。

‘伍’ JavaScript中如何把页面中的图片存入内存或cookie中,以便下一次访问相同页面的时候本地

图片是不能存入cookie的~cookie只能存一些代码或者文本之类的东西,至于内存的话就别想了,浏览器没给你这个权限,不过浏览器都有缓存的啊~打开之后都会把东西存入缓存,这个你就不用担心了~然后再一个就是新的浏览器(IE9以上)都有前端缓存,可以参考一下~

‘陆’ if (person!=null && person!="")WEB前端这个表示什么,能分解一下吗

1.这个if判断代码可能起到的作用与要达到的实际效果:

------>

person可能代表表单标签中某个input输入框的内容,

不管用户做了什么(比如什么也不输入就直接提交或者输入又清空了后提交.....),

只要最后的输入为空,就不能提交,并给出相应的提示,

这一点,我们应该有所体会了,尤其是我们在网站注册用户时经常遇到)


这里涉及网页解释执行的顺序和缓存机制:

(几乎所有的浏览器都支持javaScript,不支持的少数,几乎可以排除,不使用)

网页中的javaScript脚本代码

往往需要在文档加载完成后才能够去执行,

否则可能导致无法获取对象的情况,为了避免这种情况的发生,改变执行的先后顺序,可以使用以下两种方式:
一.将脚本代码放在网页的底端,这样在运行脚本代码的时候,可以确保要操作的对象已经加载完成。(但实际我们还是按照常规,不采用这种方式,一般为了开发效率,使用js框架,

script标签放在head标签内,位于正文body的前面)
二.通过原始的window.onload来执行脚本代码(当然这是比较保险的做法)。(但实际也不采用,因为大多数都用js框架来封装这个window.onload,使用的也是封装后的window.onload,这也可能涉及兼容性问题)


以上2种方式都不采用,实际开发中使用js等框架,仍可能存在无法获取对象(对象=null)问题

使用js框架往往有浏览器兼容性问题,不同浏览器有的支持,有的不支持

如果支持就能按照代码的设想去执行,也就是框架可以使用封装的onload改变脚本的执行顺序

(当然,这是理想的情况,没有考虑潜在兼容性问题)

如果不支持,那可能就不生效了,按照原始的从上到下的顺序依次执行


这样的情况下:

(使用js框架,script标签放在head标签内,位于正文body的前面,那么)

if判断的位置在产生person实例(body)之前,

第1次加载时:

if语句先于产生person实例执行,浏览器当前页面的缓存为空,

有可能person为null的问题

(即使使用js框架去改变加载执行顺序,有的浏览器可以做到person不为null,但这样的改变潜在兼容性问题,有的可能不生效),

,执行if后才产生person实例,出现在浏览器缓存

第2次及以后的加载,浏览器读取上一次时的person缓存,person不再为null

也就是,

if(person!=null),可以判断网页是否已经加载过person了(不再是第1次加载)

如果已经加载过了(person!=null条件成立,那么再判断输入是否空输入,""表示空输入,输入为空就不能提交了


关于&&逻辑操作符:

只有&&左边的条件(person!=null)成立才会进行右边的判断(person!=""),否则不判断,直接忽略这个if语句,不再执行if之后的语句体{...}


因此可以得到判断这么写的原因:

(不管加载执行顺序如何)

只要不为null的情况下判断输入为空才有意义,反过来是没有意义的

(判断输入为空的先决条件是person!=null)


补充:对于输入的tips:

person!=null && person!=""

的判断顺序是不能调换的,

不能写成 person!=""&&person!=null,

person!=""&&person!=null,

判断顺序不能调换的原因:无论person=null或者person!=null都满足左边的条件,虽然person=null不满足右边的条件,不会执行if的语句体,但person!=""没有发挥应有的作用,因为没有满足person!=""判断的先决条件