ASP.NET MVC: кэш с не кэшируемыми частями - PullRequest
2 голосов
/ 13 октября 2010

У меня есть тяжелая страница, которая кэшируется. Это нормально для анонимных пользователей. Все они видят одну и ту же страницу.

Проблема для зарегистрированных пользователей. Они должны иметь второстепенные части страницы, перерисованные при каждом запросе (например, личные заметки о содержании на странице и т. Д.) Но все же вся остальная часть страницы должна быть кэширована (она выполняет тонны SQL и вычислений при визуализации).

В качестве обходного пути я поместил заполнители в шаблоны страниц (например, # var1 #, # var2 #, ..). Затем я делаю метод контроллера для отображения View в строку, где я делаю string.Replace # var1 # и другие в реальные значения.

Есть ли какой-нибудь более чистый способ сделать такое частичное "не кеширование"?

Ответы [ 2 ]

2 голосов
/ 13 октября 2010

Это называется кешированием пончиков.

В настоящее время среда ASP.Net MVC не поддерживает его, но планируется для версии 3.

1 голос
/ 13 октября 2010

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

Тем не менее, в отношении попыток сервера контента для анонимных, а также вошедших в систему пользователей, один вариант - иметь две версии страницы: одну для анонимных пользователей и одну для вошедших в систему пользователей. Это может быть не лучшим подходом, поскольку теперь у вас есть две версии одной и той же страницы для обслуживания.

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

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