因此,如果我转到Internet Explorer中的Internet选项:
我可以在Google Chrome浏览器中做类似的事情吗?现在,当我更改JavaScript文件并从Visual Studio调试时,Chrome将始终使用缓存版本,而不是修改后的版本。为了能够使用当前版本,我必须手动清除我的临时Internet文件/缓存,这确实很烦人。
因此,如果我转到Internet Explorer中的Internet选项:
我可以在Google Chrome浏览器中做类似的事情吗?现在,当我更改JavaScript文件并从Visual Studio调试时,Chrome将始终使用缓存版本,而不是修改后的版本。为了能够使用当前版本,我必须手动清除我的临时Internet文件/缓存,这确实很烦人。
Answers:
选项1:暂时停用缓存
选项2:为会话禁用缓存
使用命令行开关启动Chrome,--disk-cache-size=1 --media-cache-size=1
这会将缓存限制为1个字节,从而有效地禁用了缓存。
选项3:手动强制刷新
重新加载当前页面,忽略缓存的内容: Shift+ F5或 Ctrl+ Shift+r
Chrome键盘快捷键-Chrome帮助(“网页快捷方式”下)
选项4:额外的重载选项(来源)
在开发人员工具打开的情况下,右键单击“重新加载”按钮以显示具有以下内容的重新加载菜单:
它可能与铬的更新不是100%相关的,但有待进一步开发。就像@Dom所说的,您可以在资源后添加?v =#。一种自动化过程的方法是散列所述文件的内容并将其用作版本。
如果有帮助,我在C#(实现剃须刀)中提供了有关如何执行此操作的摘要代码。
帮手:
public static string HashUrl(string relativeUrl)
{
var server = HttpContext.Current.Server;
if (File.Exists(server.MapPath(relativeUrl)))
{
byte[] hashData;
using (var md5 = MD5.Create())
using (var stream = File.OpenRead(server.MapPath(relativeUrl)))
hashData = md5.ComputeHash(stream);
return relativeUrl.Replace("~", "") + "?v=" + BitConverter.ToString(hashData).Replace("-", "");
}
return relativeUrl + "?v=notFound";
}
实现方式:
<link rel="stylesheet" href=@Util.HashUrl("~/Controllers/Home/Views/Index.css") />
希望这可以帮助
编辑---有些人要求一些构建运行时和1000个小资源,大约需要11毫秒。
https://zh.code-bude.net/wp-content/uploads/2013/08/md5_performance_benchmark_2.png
在其他可能无法实现的情况下(例如,想要在您无权访问的最终用户的计算机上强制刷新),可以在脚本名称后附加版本号作为查询参数,以使浏览器识别作为另一个文件。即。example.js?v=1
。请记住,您需要在每次重装时更改编号以强制执行。
您也可以通过本地开发来执行此操作,但是dev工具方法效率更高。
如果您正在开发网站,则应该知道Chrome需要此must-revalidate
设置Cache-Control
,以便在服务器上更改文件后正确重新获取文件。
其他答案告诉您如何按SHIFT-F5强制您自己的Chrome版本重新提取所有文件。但是,每次站点更改时,告诉站点的所有用户都这样做是合理的吗?如果您设置Cache-Control
为包括,must-revalidate
则Chrome将检查文件是否已更改,然后在需要时正确下载它们。
请参阅此博客文章的详细信息:https : //agiletribe.wordpress.com/2018/01/29/caching-for-chrome/