首页 新闻 会员 周边

客户端缓存JS问题

0
悬赏园豆:100 [已关闭问题]

请教高手,如何在客户端缓存js。例如:我有a.js,b.js,c.js这几个js都是每个页面公用的,我想在登陆的时候把这些js加载客户端缓存起来。以后访问其他页面就先检查一下客户端有无缓存 如果有就从缓存中读取,没有就从服务器加载。不知道这样行不行。

 

mykevin的主页 mykevin | 初学一级 | 园豆:105
提问于:2009-10-23 08:54
< >
分享
其他回答(4)
0

不用缓存

浏览器会自动判断的

第一打开了以后

再次打开的时候会判断要下载文件的状态

如果下载文件的状态是没有改变的话 就不会重复下载

你可以用firefox插件 firebug  ,里面的网络标签下看效果

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2009-10-23 09:18
0

以上的回答没有描述的具体点“不是浏览器会自动判断的”。

我再具体一下概念,我估计你知道一二了。

浏览器缓存(即客户端缓存)就是当你打开一个网页,浏览器会自动下载副本到你电脑上,就相当于你另存为网页到某个地方而已,只不过这里是自动而已。当然不是浏览器能把各种网页都能下载到本地电脑上,它是有特殊情况。一般html,后者requestget请求,而post一般不缓存。

在你的浏览器上点击 工具-internet选项(0-》到浏览历史记录下点击设置-》检查所存网页的较新版本下有四个选项分别代表浏览器如何调用客户端所存的文件。

1.每次访问此页时检查:表示浏览器将发送一个信息给所要访问的页面的Web服务器,查询当前访问的信息是否有变动,如无变动,就从硬盘缓存中直接调用,而且每次访问都要发送信息给Web服务器进行验证。
2
、每次启动Internet Explorer时检查:表示本次上网浏览器将只发送一次信息给Web服务器进行验证,以后无论信息是否发生变动,都从硬盘缓存中直接调用所要访问的页面的信息。
3
、自动:表示浏览器将自动检查所要访问的信息最近是否发生变动,如有变动,则从Internet上重新下载网页;相反,则直接从硬盘中读取数据。
4
、不检查:表示对要调用的页面信息不进行校验,直接从硬盘中调用。

自动选项与每次启动Internet Explorer时检查选项的功能相似,只是对图像的访问有所不同,如果随着时间的推移,浏览器发现网页上的图像更新并不频繁,这样,即使浏览器在对某个已缓存的图像执行本次启动运行以来的第一次访问时,它也不一定会向服务器发出访问请求,而是干脆直接使用缓存中的内容。

 

RicoRui | 园豆:3663 (老鸟四级) | 2009-10-23 11:16
0

需要服务器上设置允许缓存,这样客户端才会根据客户端的设置来缓存一些静态文件(如:js、css、图片)。

在IIS里,可以在站点属性的“HTTP头”里设置“启用内容过期”,来控制客户端缓存的时间。(如下图)

这样HTTP返回的HTTP头是304,启用缓存可以大大提高用户体验,另外也建议启用http压缩,来优化网站。

canbeing | 园豆:1287 (小虾三级) | 2009-10-23 12:50
0

客户端浏览器会自动判断的,默认就是如此,除非强制刷新

James.Ying | 园豆:1472 (小虾三级) | 2009-10-23 13:53
0

同意楼上的,对于静态文件用IIS或其它的WEB SERVER都可以做到,缓存客户端是IE或其它客户端的机制问题.

大众用户还是不会没事清掉客户端的cache

互联网粒子 | 园豆:315 (菜鸟二级) | 2009-10-25 15:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册