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