现在大多数浏览器都会缓存网站上的图片、CSS 和 JS 文件,以提高加载速度。当你的网站修改 CSS 和 JS 的时候往往因为缓存的原因无法立刻生效。
这样旧的 CSS 和新的 Html 就可能会导致错误,这里有个小技巧,可以保证浏览器不会缓存 CSS 和 JS,只需要在文件结尾随便加点参数即可,这样浏览器就会认为这是不同的文件。
代码如下
复制代码
<link rel="stylesheet" type="text/css" href="/style.css?ver=123" />
如果用 PHP 把现在的时间作为版本号,这样每次都会重新加载:
代码如下
复制代码
<link rel="stylesheet" type="text/css" href="/style.css?ver=<?php echo time()?>" />
当然这样做会付出代价,完全打破浏览器的缓存机制,导致每次都会重新加载相同的 CSS 和 JS
最好的解决方案应该是只有在 CSS 和 JS 文件被修改的时候才会重新加载。这里要介绍一个 PHP 的 filemtime() 函数,filemtime() 函数可以返回文件最后被修改的时间,这样只有在修改文件的时候版本才会变化。
代码如下
复制代码
<?php $css = '/style.css' ?>
<link rel="stylesheet" type="text/css" href="?ver=<?php echo $css . filemtime( $css )?>" />
WordPress
如果你使用 WordPress,可以通过 WordPress 提供的脚本排队机制挂载脚本:
代码如下
复制代码
$css = get_stylesheet_directory() . '/css/style.css'
wp_enqueue_style( 'style', $css, NULL, filemtime( $css ) )
当浏览不同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 缓存机制,以便于您获取更多的相关知识。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)