Это может быть в некотором роде еретическим вопросом. У нас есть большой сайт, где много страниц все еще в ASP. В основном, они не очень динамичны, но включают (через SSI или Server.Execute) периодически регенерируемые фрагменты HTML. Это может выглядеть как кэширование бедняка, но оно работает очень хорошо, и я предполагаю, что Microsoft сильно оптимизировала IIS для этого сценария.
Теперь мы хотели бы добиться чего-то подобного в ASP.NET/ASP.NET MVC. У нас будут периодически генерируемые фрагменты HTML (обычно раз в час или около того), которые мы хотели бы включить в оболочки ASP.NET/ASP.NET MVC, обеспечивающие хром основного сайта, некоторую навигацию и, возможно, некоторый другой динамический контент, связанный с фрагментами. Так что это смесь, но дело в том, что сгенерированный HTML периодически повторно генерируется внешним процессом, в основном из соображений производительности и поддержания синхронизации нашей фермы серверов.
Самое близкое, что мне удалось найти в ASP.NET, это:
<% Response.WriteFile("GeneratedSnippet.inc"); %>
что, по-видимому, эквивалентно
<% Server.Execute "GeneratedSnippet.inc" %>
в АСП. Возможно, это даже быстрее, потому что нет кода для выполнения. Но это, возможно, не так эффективно, как:
<!--#include file="GeneratedSnippet.inc" -->
Как я упоминал выше, я подозреваю, что IIS был оптимизирован для работы с SSI, а также ASP на протяжении многих лет. С другой стороны, Response.WriteFile, скорее всего, действительно читает файл и выдает его. У кого-нибудь есть понимание двух или некоторого опыта?
Может быть, я слишком беспокоюсь, но большая часть нашего контента с большим трафиком по-прежнему работает на ASP и использует много SSI, поэтому даже небольшая разница в Response.WriteFile может накапливаться и оказывать заметное влияние.