ASP.NET Core:JavaScript 文件被缓存

Igo*_*nko 6 caching asp.net-core-mvc asp.net-core

我正在编写一个 ASP.NET Core MVC 网站并使用我自己的 JavaScript 库,我经常对其进行编辑。

\n

问题是,有时对文件 don\xe2\x80\x99t 的修改会显示在浏览器中,即使我在调试时看到它们。

\n

重命名文件会有所帮助。大写/小写第一个字母只起到了一次作用。删除浏览器缓存没有帮助。浏览器是 Opera 的最后一个版本,我不想更改它。

\n

如果有人知道如何解决这个问题,我将非常高兴。

\n

Jer*_*ney 6

我发现清除浏览器缓存并不能解决问题很可疑。这表明可能存在另一个缓存源,可能在服务器\xe2\x80\x94 上,或者至少在您和服务器之间。这提出了几个问题:

\n\n
    \n
  • 您在网站上使用输出缓存吗?
  • \n
  • 你的 JavaScript 是否已预编译(例如,通过 TypeScript 或 Babel)?
  • \n
\n\n

无论如何,ASP.NET Core 中的教科书解决方案是实现AppendVersion的 属性ScriptTagHelper,如下所示:

\n\n
<script type="text/javascript" src="~/Shared/Script.js" asp-append-version="true"></script>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将通过计算文件的 SHA256 哈希值自动将唯一的查询字符串附加到您的脚本名称。每次修改文件时,都会生成一个新的哈希值。例如,输出可能如下所示:

\n\n
<script type="text/javascript" src="/Shared/Script.js?v=Ct6ZXzHiOuQJzhBoHlSlNyN1_d3jJnz2DvRs-5xyyJs"></script>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这有助于确保浏览器始终下载最新版本。它\xe2\x80\x99 与每次更改文件时重命名文件类似,只不过标记助手会代表您处理该问题。

\n\n
\n

注意:如果您需要应用类似于 CSS 或内联图像的内容,\xe2\x80\x99s 还有一个类似的 和 标签帮助器<link><img>

\n
\n\n

也就是说,正如顶部提到的:如果您的 HTML 输出在某种程度上被积极缓存,您可能仍然会遇到问题。

\n


Ste*_*anB 0

您是否已尝试刷新缓存?通常是 CTRL-F5 (Google Chrome)