2010-02-25 2 views
5

Я ищу в кеширование с помощью ASP.NET MVC, и я также в середине финализации веб-узла. У меня есть два вопроса ...asp.net mvc - кэширование

1) Сохраняется ли проблема кеширования при выполнении в среде общего хостинга, поскольку ресурсы разделены и все? Этот вопрос может показаться глупым, но я просто не знаю, как кеширование работает за сценой.

2) Прежде чем реализовать кэширование, я хочу спросить, имеет ли этот подход смысл. Я буду кэшировать как можно больше и аннулировать его при необходимости. Однако как работает кеширование списка элементов, которые обновляются очень часто, скажем через минуту или что-то в этом роде. Например, передняя страница StackOverflow, с которой так много вопросов добавляется каждую минуту, может быть на самом деле кэширована на первой странице?

EDIT: 3) Я также хотел бы обсудить, как кеширование работает с подкачкой и всем.

+0

Вы должны классифицировать элементы, которые вы хотите кэшировать. вещи, которые часто обновляются, не являются хорошими для кэширования. В сценарии ** stackoverflow ** Я не буду делать его кэшируемым. Вещи, связанные с настройкой учетной записи пользователя во время входа в систему и т. Д., Эти вещи могут быть кэшированы. Кроме того, если вы можете использовать любое программное обеспечение стороннего кеша, это будет лучше всего ** memcached **. –

+0

, так что вы подразумеваете memcached лучше кэширования ASP.NET? – TPR

+0

его не так просто, как лучше или хуже. Если встроенное кэширование делает то, что вам нужно, то вы не будете делать лучше ... то, что вы должны сделать, однако, помещает вашу собственную оболочку (как интерфейс) вокруг кеша - таким образом это будет просто изменить основная реализация должна вам понадобиться. – Murph

ответ

1

Я думаю, что минута - это долгое время, если вы обслуживаете 200 запросов в секунду, и я бы подумал, что SO использует кэширование вывода asp.net для первой страницы. Они также, скорее всего, будут использовать своего рода donut caching, а также кэшировать части, не относящиеся к пользователю.

Asp.net MVC использует стандартный поставщик кэширования ASP.NET без изменений. На общем хосте Кэширование должно работать правильно, однако имейте в виду, что хост может блокировать настройки кэша, если они выбирают на уровне машины. Поставщик Cache занимается управлением памятью и удаляет элементы из кеша, если использование памяти становится слишком высоким. Я предлагаю вам прочитать страницы MSDN по кешированию here.

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

Что касается пейджинга, функция кэширования вывода asp.net позволяет изменять строку запроса, поэтому, если у вас есть www.url.com?page=1, это будет храниться отдельно в кеше с сайта www.url .com? страница = 2.