【问题标题】:.aspx HTML HEAD adding UnixTimestamp to stylesheet does not work.aspx HTML HEAD 使用 Unix 时间戳到样式表不起作用
【发布时间】:2017-12-24 18:22:22
【问题描述】:

我想在我的 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 %>">

但是相关的 Line 在渲染时完全像这样显示所以在 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 用户,然后它就可以工作了。

有什么建议吗?

【问题讨论】:

  • 我现在有一个解决方案的 Workaroud:我添加了一个返回完整链接的函数 public String noCache(String url){ return '"' + url + "?ver=" + UnixTimeStampUTC( ) + '"'; }

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


【解决方案1】:

大家好,我找到了解决方案, 也许不是最好的,但它确实有效。

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

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

然后我在我的 .aspx 中使用这个函数,如下所示:

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

也许这有助于寻找类似解决方案的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-02
    • 2012-12-20
    • 2011-11-21
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    相关资源
    最近更新 更多