23

我最近回到了一个被搁置的网站项目。自从重新开始工作以来,我注意到在 Visual Studio 开发服务器中运行时,应用程序无法识别 css 和 javascript 更改。这以前工作得很好。我可以更改样式表和 javascript 并运行应用程序并进行测试。现在我可以测试应用程序的唯一方法是将它发布到我的本地 IIS 服务器(尽管我相信重新启动我的电脑也可以解决问题)。

使用 Visual Studio 2008 (9.0.30729.1)

自从我确定它工作正常以来,操作系统发生了变化,从 Vista x64 Home Premium Edition 到 Win 7 x64 Ultimate,我已经将项目源从 c: 移到了 d:。虽然我回到了 C:,但结果相同。我还在单独的 WCF 服务中移出了一些功能,这些服务由控制台应用程序(两个服务主机)托管,当网站以调试方式启动时,这些服务将投入调试。

停止开发服务器什么都不做。签出(使用 VSS 2005)所有文件以确保没有任何内容是只读的。唯一有效的方法是发布到 IIS 或重新启动我的机器。两者都不可取。如果每次停止调试时都需要终止某个进程,以确保不使用以前的副本,我什至会感到满意。

有什么解决办法吗?

4

4 回答 4

33

服务器可能正在向浏览器发送标头,导致浏览器继续使用缓存副本。对此进行测试的简单方法是清空 浏览 缓存

如果这样可以解决问题,您需要研究从服务器获取的HTTP 标头。您选择的浏览器中的开发人员 工具(又名F12 工具)将公开服务器返回的标头。然后决定是继续使用这些缓存设置(有利于速度)还是更改它们(有利于开发)。

你问,你如何调整这些标题?这取决于服务器。以下是通用服务器说明的链接:

于 2009-10-14T00:17:48.997 回答
10

一种快速的方法是在脚本或 css 文件的 src 属性之后添加随机参数。例如

<script type="javascript" src="@Url.Content("~/scripts/myScripts.js?" + DateTime.Now.ToString("ddMMHHmmss")"></script>

因此浏览器将始终假定它是一个新文件并且不会缓存。

在实时服务器上部署时,请务必将其删除。

于 2012-04-11T20:40:50.307 回答
2

如果您总是想获得最新版本的 js 和 CSS 文件,您可以修改 StaticFile 中间件,例如

app.UseStaticFiles(new StaticFileOptions()
{
    OnPrepareResponse = context =>
    {
        context.Context.Response.Headers.Add("Cache-Control", "no-cache, no-store");
        context.Context.Response.Headers.Add("Expires", "-1");
    }
});

或者您可以添加asp-append-version="true"到您的文件引用中,例如:

<link rel="stylesheet" href="~/css/site.css" asp-append-version="true"/>
于 2020-10-16T06:21:54.340 回答
0

尝试使用

<link href"~/Content/Style.css" rel="stylesheet"/>

与捆绑在一起。这对我有用

于 2015-08-05T11:21:58.807 回答