HTML中的ASP.NET C#函数

HTML中的ASP.NET C#函数,c#,asp.net,webforms,C#,Asp.net,Webforms,我在CSS和JS缓存方面遇到了很多问题,所以我决定向CSS和JS文件添加时间戳 所以我在链接的末尾添加了这个参数: ?t=<%= DateTime.Now.Ticks %> ?t= 下面是它的样子: JS: CSS: JS文件工作正常。但对于CSS文件,此参数?t=被识别为字符串为什么?我找不到区别虽然这不是对您最初问题的回答,但我可以建议您使用完全不同的方法。您可以使用默认的Microsoft库来生成捆绑包,而不是添加记号。当您这样做时,引擎将自动添加一个字符串,如?v

我在CSS和JS缓存方面遇到了很多问题,所以我决定向CSS和JS文件添加时间戳

所以我在链接的末尾添加了这个参数:

?t=<%= DateTime.Now.Ticks %>
?t=
下面是它的样子:

JS:


CSS:



JS文件工作正常。但对于CSS文件,此参数?t=被识别为字符串为什么?我找不到区别

虽然这不是对您最初问题的回答,但我可以建议您使用完全不同的方法。您可以使用默认的Microsoft库来生成捆绑包,而不是添加记号。当您这样做时,引擎将自动添加一个字符串,如
?v=dfsdf9fsdfasd
,它将是内容的散列,因此每次更改都会有所不同。然后,您可以在客户端上永久缓存资源

你的方法是有问题的,因为浏览器每次都会下载js,这是非常低效的

您可以获得有关如何使用具有缩小功能的捆绑包的一些详细信息,例如。有关如何正确制作脚本包的详细信息,请参阅我的答案

另外,如果您不想自己进行绑定,您仍然可以自己实现文件内容的哈希。另一个简单的选择是执行
?v=1
,从配置中获取版本,然后通过更改配置,可以在所有客户端上强制更新缓存


对于所有这些方法,您应该将缓存设置为1年(如果我没有记错的话,最大值)。

通过这个简单的调整,您可以轻松解决您的问题

<link rel="stylesheet" type="text/css" href="Styles/uberhint.css?t=<%= "" +DateTime.Now.Ticks %>" />

只需添加“”+


ASP.NET将链接视为HTMLINK控件,并将href属性的内容呈现为文本。插入该额外字符串将强制ASP.NET接受您正在尝试生成动态字符串的事实

如果上述答案无效,您可以尝试添加

<asp:placeholder runat="server" id="ph">

我在我的url_重写的css链接上遇到了同样的问题,这是通过填充一个额外的空charI来解决的。我修改了我的方法,现在我添加了一个应用程序版本作为参数,这将告诉浏览器只有在我更新版本时才重新加载JS和css。你应该设置缓存控制:max age=31536000作为响应,这将使浏览器永久有效地缓存数据(1年),直到您更改版本。如果你喜欢我的回答,请接受:)
<link rel="stylesheet" type="text/css" href="Styles/uberhint.css?t=<%= "" +DateTime.Now.Ticks %>" />
<asp:placeholder runat="server" id="ph">
ph.DataBind();