2010-07-27 68 views
3

這可能是一種異端問題。我們有大量的網站,許多網頁仍然在ASP中。大多數情況下,它們並不是真正動態的,但它們包括(通過SSI或Server.Execute)定期重新生成的HTML塊。它可能看起來像一個窮人的緩存,但它一直工作得很好,我猜測微軟已經針對這種情況大量優化了IIS。ASP.NET/ASP.NET MVC中的類SSI功能

現在,我們希望能夠在ASP.NET/ASP.NET MVC中實現類似的功能。我們將定期生成我們希望包含在ASP.NET/ASP.NET MVC包裝中的HTML代碼片段(通常每小時左右),這些包裝提供主站點chrome,一些導航以及可能與片段相關的一些其他動態內容。所以這是一個混合,但重點是生成的HTML定期由外部進程重新生成,主要是出於性能原因,並保持我們的服務器場同步。

在ASP.NET最接近的事我能找到的就是:

<% Response.WriteFile("GeneratedSnippet.inc"); %> 

這似乎是等同於

<% Server.Execute "GeneratedSnippet.inc" %> 
在ASP

。它可能更快,因爲沒有代碼可以執行。

<!--#include file="GeneratedSnippet.inc" --> 

正如我上面提到的,我懷疑是IIS已被起伏優化處理SSI以及ASP包括歷年來:但因爲它不是也許有效。另一方面,Response.WriteFile很可能真的讀取文件並將其吐出。任何人都能洞悉兩種或一些經驗嗎?

也許我太擔心了,但是我們大部分的流量大量內容仍然在ASP上運行,並且使用了很多SSI,所以即使Response.WriteFile中的一點點差異也可能會積累併產生可見的影響。

回答

1

你有什麼問題嗎? :)

SSI已死亡。是的,它在SERVER SIDE上進行了高度優化,但它不僅可以緩存控制器,還可以在瀏覽器中緩存控制。

如果使用太多的SSI,服務器將不得不檢查每個請求的所有相關文件的修改狀態。您無法控制HTTP標頭,例如Expires和ETag。

在ASP.NET和ASP.NET MVC中提供了很多方法來控制和使緩存無效,這可以提供更好的整體性能,並且可擴展性更高的設計和更好的可維護代碼。