Как хранить динамически генерируемые страницы в HTML? - PullRequest
1 голос
/ 21 марта 2012

Я работаю над веб-приложением ASP.net MVC3, которое сталкивается с проблемой масштабируемости.

Для повышения производительности я хочу хранить динамически сгенерированные страницы в формате html и обслуживать их непосредственно из сгенерированного html, а не запрашивать базу данных длязапрос каждой страницы.

Я уверен, что это значительно повысит производительность.

Может ли кто-нибудь поделиться каким-нибудь советом / примером / учебником о том, как это сделать?И что за проблемы?

Мне также хотелось бы знать, как другие решают проблему производительности для крупных сайтов электронной коммерции, по крайней мере, с тысячами категорий и 200 тыс. Продуктов с как минимум 200-500 одновременными посетителями?Каковы лучшие подходы?

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 21 марта 2012

Вы должны взглянуть на Улучшение производительности с помощью кэширования вывода .

Он предоставляет несколько способов кешировать выходные данные ваших контроллеров следующим образом:

[OutputCache(Duration=10, VaryByParam="none")]
public ActionResult Index()
{
    return View();
}
1 голос
/ 21 марта 2012

Вам не нужно этого делать, просто включите кэш вывода. Это будет то же самое, вместо того, чтобы использовать всю логику для создания страниц, вы будете извлекать статическую, но из кеша вместо диска.

0 голосов
/ 21 марта 2012

Знаете ли вы, где находится ваше узкое место?

Я полагаю, что ваша база данных является узким местом, но если вы не определите, где находится это узкое место, вы, вероятно, потратите много времени на оптимизацию вещей, которые могут не иметь большого значения.

Первое, что нужно сделать, это получить копию PAL и следить за веб-сервером и базой данных, чтобы увидеть, что он вам говорит.

Также запускайте SQL-запросы для диагностики самых дорогих и частых запросов.

Измерьте время фактической генерации страниц и проследите его по стеку, чтобы увидеть, какие звонки выполняются, а какие дороги и могут быть кэшированы.

Вместо кэширования вывода я обычно представлял бы слой кэширования перед веб-серверами и слой кэширования между сервером приложений и БД, но без измерения очень трудно судить.

Если вы хотите узнать больше о кэшировании в целом, я бы прочитал этот ответ, который я недавно написал Как начать работу с веб-кэшированием, CDN и прокси-серверами?

0 голосов
/ 21 марта 2012

Я бы посмотрел на реализацию системы кеша для часто просматриваемых страниц. Платформа .Net имеет несколько действительно хороших библиотек кеша, которые могут использоваться для управления кешем в режиме реального времени.

Cache Best Practices msdn.microsoft.com/en-us/library/aa478965.aspx

Я мог бы также взглянуть на написание полноценного API, который может быть сбалансирован по нагрузке между несколькими узлами кластера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...