SSI-подобная функция в ASP.NET / ASP.NET MVC - PullRequest
3 голосов
/ 27 июля 2010

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

1 голос
/ 28 июля 2010

Какой у вас вопрос? :)

SSI мертв. Да, он очень оптимизирован для SERVER SIDE, однако он может не очень эффективно кэшировать управление не только на сервере, но и в браузерах.

Если вы используете слишком много SSI, сервер должен будет проверять измененный статус всех связанных файлов для каждого запроса. Вы не можете управлять заголовками HTTP, например, Expires и ETag.

В ASP.NET и ASP.NET MVC (слишком) предусмотрено множество способов управления и аннулирования кэшей, что может повысить общую производительность, повысить масштабируемость и улучшить коды для сопровождения.

...