ASP.NET HTML 中的 C# 函数
ASP.NET C# function in HTML
我在 CSS 和 JS 缓存方面遇到了很多问题,所以我决定将时间戳添加到 CSS 和 JS 文件。
所以我在链接末尾添加了这个参数:
?t=<%= DateTime.Now.Ticks %>
所以这是它的样子:
JS:
<script type="text/javascript" src="Scripts/global_scripts.js?t=<%= DateTime.Now.Ticks %>"></script>
CSS:
<link rel="stylesheet" type="text/css" href="Styles/mysite.css?t=<%= DateTime.Now.Ticks %>" />
JS 文件工作正常。但是对于 CSS 文件,此参数 ?t=<%= DateTime.Now.Ticks %> 被识别为字符串。 为什么?我找不到区别
虽然这不是您最初问题的答案,但我可以建议您使用完全不同的方法。您可以使用默认的 Microsoft 库来制作捆绑包,而不是添加标记。当你那样做时,引擎会自动添加一个像 ?v=dfsdf9fsdfasd
这样的字符串,这将是内容的哈希值,所以每次更改都会不同。然后你就可以永远在客户端缓存资源。
你的做法有问题,每次浏览器都要下载js,效率极低
您可以获得一些关于如何使用压缩包的详细信息,例如here。有关如何正确制作脚本包的一些详细信息,请参阅我的回答。
P.S。如果你不想自己打包,你仍然可以自己实现文件内容的哈希。另一个简单的选择是 ?v=1
,从配置中获取版本,然后通过更改配置,您将能够强制更新所有客户端的缓存。
对于所有的方法,您都应该将缓存设置为 1 年(如果我没记错的话最长)。
您可以通过这个简单的调整轻松解决您的问题
<link rel="stylesheet" type="text/css" href="Styles/uberhint.css?t=<%= "" +DateTime.Now.Ticks %>" />
只需添加 "" +.
ASP.NET 将 link 视为 HtmlLink 控件,并将 href 属性的内容呈现为文字。插入额外的字符串会强制 ASP.NET 接受您正在尝试生成动态字符串
如果以上回答都不行,您可以尝试添加一个
<asp:placeholder runat="server" id="ph">
上面的脚本和css标签,在page_load你可以绑定占位符。
ph.DataBind();
我在 CSS 和 JS 缓存方面遇到了很多问题,所以我决定将时间戳添加到 CSS 和 JS 文件。
所以我在链接末尾添加了这个参数:
?t=<%= DateTime.Now.Ticks %>
所以这是它的样子:
JS:
<script type="text/javascript" src="Scripts/global_scripts.js?t=<%= DateTime.Now.Ticks %>"></script>
CSS:
<link rel="stylesheet" type="text/css" href="Styles/mysite.css?t=<%= DateTime.Now.Ticks %>" />
JS 文件工作正常。但是对于 CSS 文件,此参数 ?t=<%= DateTime.Now.Ticks %> 被识别为字符串。 为什么?我找不到区别
虽然这不是您最初问题的答案,但我可以建议您使用完全不同的方法。您可以使用默认的 Microsoft 库来制作捆绑包,而不是添加标记。当你那样做时,引擎会自动添加一个像 ?v=dfsdf9fsdfasd
这样的字符串,这将是内容的哈希值,所以每次更改都会不同。然后你就可以永远在客户端缓存资源。
你的做法有问题,每次浏览器都要下载js,效率极低
您可以获得一些关于如何使用压缩包的详细信息,例如here。有关如何正确制作脚本包的一些详细信息,请参阅我的回答。
P.S。如果你不想自己打包,你仍然可以自己实现文件内容的哈希。另一个简单的选择是 ?v=1
,从配置中获取版本,然后通过更改配置,您将能够强制更新所有客户端的缓存。
对于所有的方法,您都应该将缓存设置为 1 年(如果我没记错的话最长)。
您可以通过这个简单的调整轻松解决您的问题
<link rel="stylesheet" type="text/css" href="Styles/uberhint.css?t=<%= "" +DateTime.Now.Ticks %>" />
只需添加 "" +.
ASP.NET 将 link 视为 HtmlLink 控件,并将 href 属性的内容呈现为文字。插入额外的字符串会强制 ASP.NET 接受您正在尝试生成动态字符串
如果以上回答都不行,您可以尝试添加一个
<asp:placeholder runat="server" id="ph">
上面的脚本和css标签,在page_load你可以绑定占位符。
ph.DataBind();