Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 使用Stackoverflow这样的查询字符串对CSS文件进行版本控制?_Asp.net Mvc_Css_Query String - Fatal编程技术网

Asp.net mvc 使用Stackoverflow这样的查询字符串对CSS文件进行版本控制?

Asp.net mvc 使用Stackoverflow这样的查询字符串对CSS文件进行版本控制?,asp.net-mvc,css,query-string,Asp.net Mvc,Css,Query String,如果您查看Stackoverflow.com的源代码,您会看到对其css文件的引用是: <link href="/Content/all.min.css?v=2383" rel="stylesheet" type="text/css" /> 如何做到这一点,以便他们可以通过查询字符串传递版本,并提供正确的CSS文件?这样您的浏览器就不会缓存CSS文件。使用版本号很方便,因为css文件在每个版本中都可能发生更改 这不是调用正确css文件的方法。文件总是相同的,但版本号会让浏览器产

如果您查看Stackoverflow.com的源代码,您会看到对其css文件的引用是:

<link href="/Content/all.min.css?v=2383" rel="stylesheet" type="text/css" />


如何做到这一点,以便他们可以通过查询字符串传递版本,并提供正确的CSS文件?

这样您的浏览器就不会缓存CSS文件。使用版本号很方便,因为css文件在每个版本中都可能发生更改

这不是调用正确css文件的方法。文件总是相同的,但版本号会让浏览器产生不同的想法,并再次获取它。

解释了其背后的想法。基本上,您可以将上次修改文件的时间戳附加到文件名中,但仍然提供原始文件。这样,每次保存CSS文件的新版本时,文件名都会更改,这将迫使浏览器下载新版本。这将适用于多种文件,包括CSS和JS文件。(使用文件名的替代方法是使用查询字符串。)

ASP.NET示例如下所示:

public static string GetBreaker(string fileName)
{
    string cacheBreaker = null;
    try
    {
        if (fileName.StartsWith("~"))
        {
            fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName.Remove(0));
        }
        cacheBreaker = File.GetLastWriteTime(fileName).ToFileTime().ToString();
    }
    catch { }

    return string.IsNullOrEmpty(cacheBreaker) ? string.Empty : string.Format("?cachebreaker={0}", cacheBreaker);
}
您在母版页中以以下方式调用此方法:

<link href="<%= this.ResolveClientUrl("~/CSS/style.css") %><%=CacheBreaker.GetBreaker("~/CSS/style.css") %>"
            rel="stylesheet" type="text/css" />

如果你想知道它是如何完成的,他们在上一篇博文中很快提到了这一点:它是由他们的构建过程自动完成的。(第三点)


遗憾的是,没有详细信息,但您可以通过评论该博客文章或联系stackoverflow团队来获得更多信息。

每次更改文件名时,只需更改文件名即可获得相同的效果

file001.css
file002.css

我有一种感觉,保持文件名不变并添加
?ver=1234
是为了使源代码管理更容易。

所以当文件复制到那里时,它的物理文件名是什么?“all.min.css?v=2383”?我知道它是用来防止cachingIt与文件无关。它只是添加在页面的代码中。文件名仍然是all.min.cs,这并不会真正阻止缓存,但每次更改数字时,页面都会再次加载,因为它是一个新的URL。但是,旧的URL仍然被缓存。这是正确的答案。请参阅前面的问题以获得解释:那么在这种情况下是什么?动态生成?几乎肯定不是,正如我在回答中所描述的