我需要清除 Chrome 中一个文件的缓存。
\n我正在设置从我自己的 CDN 加载字体,并添加cache-control: public, max-age=31536000, immutable标题。但是,我没有正确设置 CORS,因此出现 CORS 错误。现在,CORS 错误已修复,但由于缓存控制标头,Chrome 仍在服务旧请求。
注意:我只需要清除一次缓存。我希望字体将来是不可变的。
\n我可以确认 CORS 错误有两个原因:
\ncurl -IL -X\'GET\' -H\'Origin: http://localhost:3000\' https:example.com/file返回正确的 CORS 标头caching google-chrome browser-cache cache-invalidation google-chrome-devtools
正如标题所说,谷歌浏览器拒绝加载较新版本的 Javascript 文件。
我试过了:
基本上这里列出的所有内容:Chrome 不会清除缓存... ctrl + F5 似乎也不起作用
这些都没有奏效。源面板仍然显示正在加载旧的 Javascript 文件。绝对令人难以置信的是,当我右键单击源面板中的文件,然后选择在新选项卡中打开时,更新后的文件会在新选项卡中打开,但刷新页面后仍会在源面板中显示旧文件开发控制台。
让 Chrome 为我工作的唯一方法是手动附加 ? 以及文件名末尾的随机数。这似乎迫使 Chrome 实际加载新文件。截至目前,我一直在使用 PHP 添加一个
<script type="text/javascript" src="file.js<?php echo '?' . rand(); ?>"></script>
Run Code Online (Sandbox Code Playgroud)
为了在 Chrome 中正确加载任何内容,但这似乎是一个糟糕的解决方案。
我的问题是,如何让 Chrome 从服务器而不是缓存实际重新加载 Javascript 文件?
在回顾这篇文章的答案时,我不明白为什么0秒用于最佳实践:
ExpiresByType text/html "access plus 0 seconds"
Run Code Online (Sandbox Code Playgroud)
我认为这意味着每当用户访问网站时,总是会下载html页面而不是从缓存中提取.是对的吗?
这是人们通常为这个变量设置的吗?如果是这样的话?如果没有,哪些场景可以将其设置为0秒?