SSI-подобная функция в ASP.NET / ASP.NET MVC

Это может быть еретическим вопросом в некотором роде. У нас есть большой сайт, где все еще много страниц в 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" %>

в 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 (слишком) имеется много способов управления и аннулирования кэшей, что может повысить общую производительность, улучшить масштабируемость и улучшить кодируемость.

Другие вопросы по тегам