【问题标题】:SSI-like feature in ASP.NET / ASP.NET MVCASP.NET / ASP.NET MVC 中的类似 SSI 的功能
【发布时间】:2010-07-27 15:46:21
【问题描述】:

这在某种程度上可能是一个异端问题。我们有大型网站,其中很多页面仍在 ASP 中。大多数情况下,它们并不是真正动态的,但它们包括(通过 SSI 或 Server.Execute)定期重新生成的 HTML 块。它可能看起来像一个穷人的缓存,但它运行得非常好,我猜微软已经针对这种情况对 IIS 进行了大量优化。

现在,我们希望能够在 ASP.NET / ASP.NET MVC 中实现类似的功能。我们将定期生成 HTML sn-ps(通常每小时左右),我们希望将其包含到 ASP.NET / ASP.NET MVC 包装器中,提供主站点 chrome、一些导航,以及可能与 sn 相关的一些其他动态内容-ps。所以这是一种混合,但关键是生成的 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 的一点差异也可能会累积并产生明显的影响。

【问题讨论】:

    标签: asp.net asp.net-mvc ssi


    【解决方案1】:

    你有什么问题? :)

    SSI 已死。是的,它在 SERVER SIDE 上进行了高度优化,但是不仅在服务器中而且在浏览器中缓存控制可能不是很有效。

    如果您使用过多的 SSI,服务器将不得不检查每个请求的所有相关文件的修改状态。您无法控制 HTTP 标头,例如 Expires 和 ETag。

    在 ASP.NET 和 ASP.NET MVC 中提供了(太多)多种方式来控制和使缓存无效,这可以提供更好的整体性能、更具可扩展性的设计和更好的可维护性代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-06
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多