Visual Studio开发服务器没有更新css和javascript?

时间:2009-10-14 00:13:24

标签: asp.net cassini

我最近回到了一个已经退缩的网站项目。由于重新开始工作,我注意到当应用程序在Visual Studio开发服务器中运行时,css和javascript更改无法被应用程序识别。以前工作正常。我可以更改样式表和javascript并运行应用程序并进行测试。现在,我可以测试应用程序的唯一方法是将它发布到我的本地IIS服务器(虽然我相信重新启动我的电脑也可以解决问题)。

使用Visual Studio 2008(9.0.30729.1)

自从我确定它工作正常以来已经发生变化的是操作系统,从Vista x64家庭高级版到Win 7 x64旗舰版,我已经将项目源从c:移到了d:。虽然我回到了C:同样的负面结果。我还在单独的WCF服务中移出了一些功能,由控制台应用程序(两个服务主机)托管,当网站在调试中启动时,这些服务将被调试。

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

任何解决方案?

4 个答案:

答案 0 :(得分:30)

服务器可能正在向浏览器发送标头,导致它继续使用缓存副本。测试此问题的简单方法是empty your browser cache

如果修复它,您需要研究从服务器获得的HTTP headers。您选择的浏览器中的developer tools(a.k.a。F12 tools)将公开服务器返回的标头。然后决定是否要继续使用这些缓存设置(good for speed)或更改它们(good for development)。

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

答案 1 :(得分:7)

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

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

因此浏览器将始终采用新文件并且不会缓存。

请确保在实时服务器上部署时删除它。

答案 2 :(得分:0)

尝试使用

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

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

答案 3 :(得分:0)

如果您始终想要获取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"/>