css 和 javascript 后面加上版本号有什么用?

css 和 javascript 后面加上版本号有什么用?,第1张

加上版本号的作用主要有二个:

1.方便版本控制,比如1.1版本的样式表,可以升级为2.0版本的样式表

2.强制浏览器更新(因为http请求时,如果访问的路径不变,而客户端缓存中又有该文件时,浏览器会直接调用缓存中的文件,这样的话,即使服务端的css内容变化了,但是客户端仍然有可能显示的是旧文件,而加上新的版本号以后,浏览器会认为这是一个新的访问地址,会重新下载最新版本的文件)

IE浏览器自动加载修改后的js文件或者jsp文件原理不同。

1、热部署jsp:

Tomcat jsp热部署的实现原理大体是这样的,每个JSP页面从上次访问到下次访问总是有默认几秒的缓存时间的,也就说并不是严格的即修改即生效,tocmat7默认是有4秒的缓存延迟的。这个默认的缓存延迟是在类EmbeddedServletOptions的private intmodificationTestInterval = 4这个属性定义的。如果过了4秒缓存时间即失效,这个时候tomcat就会读取jsp的modified时间戳和work目录下编译好的class文件的modified的时间戳作对比。如果相等则class文件没有过期,则不会重新编译jsp文件,如果过期了则重新将jsp编译成java,并进一步编译成class。同时调用JasperLoader来重新加载这个有jsp编译好的class文件。

2、js修改后需要在后面加版本号才能自动加载

定义时间戳:

public final static SYSTEM_STARUP_TIME = System.currentTimeMillis()

比如<script type="text/javascript" src="/js/2011/oschina.js?<%=SYSTEM_STARUP_TIME %>"></script>

//得到用户的浏览器名string userbrowser = st.nexttoken()//得到用户的 *** 作系统名string useros = st.nexttoken()取得本机的信息也可以这样: *** 作系统信息system.getproperty("os.version")system.getproperty("os.arch")浏览器:request.getheader("user-agent")再送个红包request.getheader(“user-agent”)返回客户端浏览器的版本号、类型getheader(string name):获得http协议定义的传送文件头信息,request. getmethod():获得客户端向服务器端传送数据的方法有get、post、put等类型request. getrequesturi():获得发出请求字符串的客户端地址request. getservletpath():获得客户端所请求的脚本文件的文件路径request. getservername():获得服务器的名字request.getserverport():获得服务器的端口号request.getremoteaddr():获得客户端的ip地址request.getremotehost():获得客户端电脑的名字,若失败,则返回客户端电脑的ip地址request.getprotocol():request.getheadernames():返回所有request header的名字,结果集是一个enumeration(枚举)类的实例request.getheaders(string name):返回指定名字的request header的所有值,结果集是一个enumeration(枚举)类的实例


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8017425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存