js或css文件后面为什么有参数

有同学经常遇到html页面里加载的js与css文件带有参数,比如:

<script type="text/javascript" src="dreamdu.js?1217128319"></script>
<link rel='stylesheet' href='http://www.dreamdu.com/n.css?version=2.3.3' type='text/css' />
<link rel='stylesheet' href='http://www.dreamdu.com/n.css?version=20080727182553' type='text/css' />

使用参数有两种可能,

  • 脚本并不存在,而是服务端动态生成的,因此带了个版本号,以示区别。
  • 客户端会缓存这些css或js文件,因此每次升级了js或css文件后,改变版本号,客户端浏览器就会重新下载新的js或css文件

第二种情况最多,也可能两种同时存在。

版本号,可以是一个随机数,也可以是一个递增的值,大版本小版本的方式,或者根据脚本的生成时间书写,比如 20080727182553 就是精确到了生成脚本的秒,而 2.3.3 就是大版本小版本的方式。

补充疯中男子所说的几种可能:

  • 服务器端使用了URLRewrite,实际上最终访问的是动态服务器文件,例如xxx.php,而这个服务器端文件运行完毕后,response 出来一个标准的 JS 字串流。
  • 根本就是从客户端提交参数上去的。我就在项目中使用过这种方式,页面都是自动生成的,因此在生成的页面中打上特殊标记。,这样在运行脚本时,能够知道是哪个页面在请求脚本,可以运行不同的方法。用这个方法偷偷记录PV很不错。

您可能感兴趣的内容

作者: 可爱的猴子
原载: 可爱的猴子的blog
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。

发表评论

js或css文件后面为什么有参数“5 评论”(只显示最后20条评论)

为了在有限的时间内做出更多更好的教程,留言只解答教程中发现的问题,请谅解

  1. 疯中男子 说:


    还有几种可能:
    3、服务器端使用了URLRewrite,实际上最终访问的是动态服务器文件,例如xxx.php,而这个服务器端文件运行完毕后,response 出来一个标准的 JS 字串流。
    echo “var a=’Hi’;”;
    echo “alert(a);”;
    也可以直接连动态文件

    4、根本就是从客户端提交参数上去的。我就在项目中使用过这种方式,页面都是自动生成的,因此在生成的页面中打上特殊标记。,这样在运行脚本时,能够知道是哪个页面在请求脚本,可以运行不同的方法。用这个方法偷偷记录PV很不错。
    哈哈。

    [Reply]

    可爱的猴子 reply on 2009-08-25 19:56:

    看来是学海无涯呀,有道理。

    [Reply]

  2. Francis 说:

    第一种可能性理解有误:
    是脚本存在,而是这句语句是动态生成的。
    如果脚本不存在,而是服务器动态生成的,这是不可能的。一个服务器怎么可能动态生成一个JS扩展名的文件呢?至少也是.JS.PHP之类的吧。

    [Reply]

    可爱的猴子 reply on 2008-07-28 9:58:

    哈哈,服务器端的php等程序,可以动态生成一个扩展名为txt的文件,这个能确定吧? 那为什么就不能动态生成一个扩展名为js的文件呢? 首先服务器端没有这个js文件,当用户客户端发出请求后,服务器端的程序动态的生成了此js文件(js文件中可能包括用户信息什么的个性内容,所以要动态生成,或者js文件加载了数据库里面的内容,而要保持js文件里面的内容与数据库同步就要动态生成),应尽量少这样做,因为耗费服务器的cpu。

    [Reply]

    Francis reply on 2008-07-28 14:48:

    啊,明白了。你的意思是生成静态的文件啊。

    [Reply]