栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript如何强制浏览器重新加载缓存的CSS / JS文件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript如何强制浏览器重新加载缓存的CSS / JS文件?

更新: 重写以合并John Millikin和da5id的建议。该解决方案是用PHP编写的,但应易于适应其他语言。

更新2:结合尼克·约翰逊(Nick Johnson)的意见,即原始

.htaccess
正则表达式可能会导致文件问题
json-1.3.js
。解决方案是仅在末尾恰好有10位数字时才重写。(因为10位数字涵盖了从9/9/2001到11/20/2286的所有时间戳。)

首先,我们在.htaccess中使用以下重写规则:

RewriteEngine onRewriteRule ^(.*).[d]{10}.(css|js)$ $1.$2 [L]

现在,我们编写以下PHP函数:

function auto_version($file){  if(strpos($file, '/') !== 0 || !file_exists($_SERVER['document_ROOT'] . $file))    return $file;  $mtime = filemtime($_SERVER['document_ROOT'] . $file);  return preg_replace('{\.([^./]+)$}', ".$mtime.$1", $file);}

现在,无论你在哪里包含CSS,都可以从以下位置进行更改:

<link rel="stylesheet" href="/css/base.css" type="text/css" />

对此:

<link rel="stylesheet" href="<?php echo auto_version('/css/base.css'); ?>" type="text/css" />

这样,你无需再次修改link标记,并且用户将始终看到最新的CSS。浏览器将能够缓存CSS文件,但是当你对CSS进行任何更改时,浏览器会将其视为新的URL,因此它将不使用缓存的副本。

这也可以用于图像,图标和Javascript。基本上任何不是动态生成的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374131.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号