我可以强制刷新样式表文件吗?

Gil*_*lit 28 css asp.net

我刚刚花了半天时间悄悄地发疯了.

我正在对Site.css文件中的类进行更改,并且它们没有反映在我的计算机上正在开发的站点中.因为我正在通过jQuery学习并使用addClass和removeClass,我正在动态地为这些调用创建参数,我确信问题出在我的实现中.

原来CSS文件缓存在浏览器中,我所要做的就是刷新它...

有没有办法强制刷新(最好只在调试期间我猜)?

zom*_*bat 53

一种流行的"缓存中断"方法是在css源中附加参数.通常使用时间戳.我更喜欢"文件最后修改"时间,即.filemtime()用PHP.我敢肯定有一个asp.net函数会给你这个.

然后你的CSS标签变成:

<link rel="stylesheet" type="text/css" media="screen" href="/main.css?123456789"/>
Run Code Online (Sandbox Code Playgroud)

每当CSS文件更新时,查询参数都会更改.


thi*_*eek 18

CTRL + F5可以刷新网页上的所有内容,包括脚本和样式表.

此外,您可以从动态服务器页面[php/asp.net]和Response.Expires = -1合并要提供的样式表,这将强制客户端显式加载每个HTTP-GET请求上的css.您也可以在CSS mime类型的Web服务器设置中执行此操作.


Max*_*Max 10

我用这个技巧:

<link rel="stylesheet" type="text/css" href="cssfile.css?t=<%= DateTime.Now.Ticks %>" media="screen" />
Run Code Online (Sandbox Code Playgroud)

  • 这个答案的问题在于,它总是会强迫客户下载样式表 - 即使样式表在服务器上没有更改.接受的答案更好,因为样式表只有在客户修改后才会重新下载. (7认同)

Ian*_*emp 7

对于ASP.NET,后面的代码(您可以将它放在实用程序类或母版页中):

public static string GetTimestampedUrl(string virtualPath)
{
  var realPath = HostingEnvironment.MapPath(virtualPath);
  var file = new FileInfo(realPath);

  return VirtualPathUtility.ToAbsolute(virtualPath) + "?" + file.LastWriteTime.ToFileTime();
}
Run Code Online (Sandbox Code Playgroud)

然后在你的页面中:

<link href="<%= GetTimestampedUrl("~/screen.css") %>" rel="stylesheet" type="text/css" media="screen" />
Run Code Online (Sandbox Code Playgroud)