.aspx HTML HEAD将UnixTimestamp添加到样式表不起作用

时间:2017-07-19 12:53:46

标签: c# html asp.net caching browser-cache

我想在我的css和js文件中添加一个参数,以禁止浏览器缓存特定文件。

我在index.aspx和我的c#代码中尝试了两个版本,但没有任何作用。

第一次尝试是添加DateTime.Now.Ticks,如下所示:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" 
Inherits="_index" %>
<!DOCTYPE html>
<html lang="de">
<head runat="server">
<meta charset="UTF-8">
<title>Index Page</title>
<link rel="stylesheet" href="css/vendor/bootstrap.min.css">
<link rel="stylesheet" href="css/vendor/bootstrap-datetimepicker.min.css">
<link rel="stylesheet" href="css/vendor/sweetalert2.min.css">
<link rel="stylesheet" href="css/style.css?<%=DateTime.Now.Ticks %>">

但相关的线在渲染时显示的确如此,所以在style.css之后没有Ticks?而是aspx代码。

另一个版本是写一个UnixTimeStamp函数,它返回我的Unix时间戳:

public Int32 UnixTimeStampUTC()
    {
        Int32 unixTimeStamp;
        DateTime currentTime = DateTime.Now;
        DateTime zuluTime = currentTime.ToUniversalTime();
        DateTime unixEpoch = new DateTime(1970, 1, 1);
        unixTimeStamp = (Int32)(zuluTime.Subtract(unixEpoch)).TotalSeconds;
        return unixTimeStamp;
    }

我把它包括在内,但结果是一样的:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" 
Inherits="_index" %>
<!DOCTYPE html>
<html lang="de">
<head runat="server">
<meta charset="UTF-8">
<title>Index Page</title>
<link rel="stylesheet" href="css/vendor/bootstrap.min.css">
<link rel="stylesheet" href="css/vendor/bootstrap-
datetimepicker.min.css">
<link rel="stylesheet" href="css/vendor/sweetalert2.min.css">
<link rel="stylesheet" href="css/style.css?<%= UnixTimeStampUTC() %>">

这再次呈现:

<!DOCTYPE html>
<html lang="de">
<head runat="server">
<meta charset="UTF-8">
<title>Index Page</title>
<link rel="stylesheet" href="css/vendor/bootstrap.min.css">
<link rel="stylesheet" href="css/vendor/bootstrap-
datetimepicker.min.css">
<link rel="stylesheet" href="css/vendor/sweetalert2.min.css">
<link rel="stylesheet" href="css/style.css?<%= UnixTimeStampUTC() %>">

在我的.aspx的其余部分,我也使用这种技术来显示一个NTLM用户并且它可以工作。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

嘿伙计们我找到了解决方案, 也许不是最好的但它有效。

在.aspx.cs中,我编写了一个生成缓存网址的函数。这个函数也使用我上面的UnixTimeStampUTC()函数:

public String noCache(String url){
  return '"' + url + "?ver=" + UnixTimeStampUTC() + '"';
}

然后我在我的.aspx中使用此功能,如下所示:

<link rel="stylesheet" href=<%= noCache("css/style.css") %>>

也许这有助于某人搜索相似的解决方案。