即使 url 是新的,浏览器也不会下载更新的 css、js 等

Posted

技术标签:

【中文标题】即使 url 是新的,浏览器也不会下载更新的 css、js 等【英文标题】:Browser is not downloading updated css, js etc even when url is new 【发布时间】:2020-07-14 09:42:07 【问题描述】:

我在 asp.net mvc 4 中开发了一个 Web 应用程序,我在其中提供一些资源文件,例如 css、js、图像等。

为了始终提供更新的文件,我在查询字符串中附加了一个随机字符串。当我发布我的应用程序时,该查询字符串值会发生变化。因此,每个发布活动都会更改该字符串。

但浏览器即使更改了 URL 也不会下载文件。浏览器第一次下载文件并始终从缓存副本中提供服务。 下面是我的代码。

<script src="~/Content/js/userdefined/dashboard.js?t=@Constants.RandomString" defer></script>

public static class Constants

    public static readonly string RandomString = Guid.NewGuid().ToString().ToLower();

因此,每次发布应用程序时,它都会生成一个按预期工作的新字符串。

任何人都可以帮助解决这个问题,比如为什么即使 url 发生更改,浏览器也不会下载更新的文件?

【问题讨论】:

您是否尝试通过将 IIS manager-> configuration manager->system.webserver->cache controlmode 设置为 DisableCache 来禁用缓存 我在应用服务 Web 应用中的 MS Azure 上部署了应用程序。如何禁用它? 我会尝试用@Guid.NewGuid() 替换@Constants.RandomString,这应该会在每次调用时生成新的随机字符串,以确保加载正确的js。如果可行,请确保在每次发布后更新静态 @Constants.RandomString,但情况可能并非如此(即,如果发布不触及 web.config 或 \bin,静态实例将相同)。 @user2316116 事实并非如此。我已经检查了每个发布,Constants.RandomString 生成新字符串,但仍然没有自动下载 js。我必须进行硬刷新 你看过this***页面了吗? 【参考方案1】:

我假设浏览器没有更新,因为它的缓存中已经有信息。当有人更新不直接在 Web 文档内部的 CSS 并且从另一个文件加载时,许多浏览器都会出现此问题。要完全重置页面的信息,您可以使用 Control + Shift + R 进行硬重置。

【讨论】:

请仔细阅读问题。您不能要求您的用户进行硬刷新,以及他们如何知道我发布了新版本?

以上是关于即使 url 是新的,浏览器也不会下载更新的 css、js 等的主要内容,如果未能解决你的问题,请参考以下文章

Gridsome 项目托管在 netlify 上。点击时,即使 URL 更新,页面也不会加载

即使从主线程调用更新,UI 也不会更新

Android App Bundle - 我的密钥不被接受,即使它是新的

即使响应包含ajax请求的“Set-Cookie”标头,cookie也不会存储在浏览器中

谷歌浏览器有哪几个版本?

即使 url 更改,路由组件也不会呈现。使用自定义 webpack