簡體   English   中英

HTML中的ASP.NET 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,這是非常低效的。

您可以獲得有關如何使用縮小捆綁包的詳細信息,例如此處 有關如何正確編寫腳本包的一些詳細信息,請參閱我的答案。

PS如果您不想自己捆綁,您仍然可以自己實現文件內容的哈希值。 另一個簡單的選擇是?v=1 ,從config獲取版本,然后通過更改配置,您將能夠強制所有客戶端上的緩存更新。

使用所有方法,您應該將緩存設置為1年(如果我沒記錯的話,最大值)。

通過這種簡單的調整,您可以輕松解決問題

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

只需添加“”+

ASP.NET將鏈接視為HtmlLink控件,並將href屬性的內容呈現為文字。 插入Extra字符串會強制ASP.NET接受您嘗試生成動態字符串

如果上述答案不起作用,您可以嘗試添加一個

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

在腳本和css標記之上,在page_load中你可以綁定占位符。

ph.DataBind();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM