У меня есть веб-сайт, который имеет много заголовков хоста. Тема и данные зависят от заголовка хоста, и различные хосты загружают различно выглядящие сайты.
Поэтому давайте предположим, что у меня есть веб-сайт под названием "Нечто", которое возвращает результаты поиска. Тот же код выполняет оба упомянутые ниже сайта. Это - тот же сервер и веб-сайт (использующий Заголовки Хоста)
www.foo.com
www.foo.com.au
Теперь, если я перехожу в .com
, сайт является тематическим в синем. Если я перехожу в .com.au
сайт, это тематически в красном.
И данные отличаются для того же результата поиска, на основе имени хоста: американские результаты для .com
и австралиец заканчивается для .com.au
.
Если я хочу использовать OutputCaching
, это может быть обработано и разделено именем хоста?
Я - озабоченность, которая после человека переходит в .com
сайт, (правильно возврат американских результатов), что второй человек, посещающий .com.au
сайт и поиск тех же данных получат тему и результаты для .com
сайт.
Действительно ли кэширование возможно?
Проверьте параметр VaryByCustom в директиве OutputCache .
Чтобы определить, что происходит при вызове VaryByCustom, вам необходимо переопределить метод GetVaryByCustomString:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if(custom == "Your_Custom_Value")
{
// Do some validation.
// Return a string for say, .com, or .com.au
}
return String.Empty;
}
Ключ должен вернуть строковое значение для каждого экземпляра, который вы хотите кэшировать. В вашем случае переопределенный метод должен будет удалить часть «.com» или «.com.au» из URL-адреса и вернуть ее. Каждое различное значение создает различный кеш.
HTH