В ASP.NET можно ли выводить кеш по имени хоста? Т.е. варбибийхост или варбихостхед?
-
25-09-2019 - |
Вопрос
У меня есть веб-сайт, который имеет ряд заголовков хоста. Тема и данные зависят от заголовка хоста, а разные хосты загружают различные саты.
Итак, давайте представим, у меня есть веб-сайт под названием «Foo», который возвращает результаты поиска. Этот же код проходит как сайты, перечисленные ниже. это тот же сервер и веб-сайт (Использование заголовков хоста)
www.foo.com
www.foo.com.au
Теперь, если я пойду к .com
, Сайт тематичен синим. Если я пойду к .com.au
Сайт, это тематическое в красном.
И данные различны для того же результата поиска, основанные на имени хоста: результаты США для .com
и австралийские результаты для .com.au
.
Если я хочу использовать OutputCaching
, Может ли это обрабатываться и разделены именем хоста?
Я обеспокоен тем, что после того, как человек идет к .com
сайт (правильно возвращает результаты США), что второй человек, посещающий .com.au
сайт и поиск тех же данных получит тему и результаты для .com
сайт.
Возможно ли кэширование?
Решение
Да, вы можете «варьироваться на заказ». Я использую то же самое:
Поместите следующее в своем Global.Asax.cs:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "Host")
{
return context.Request.Url.Host;
}
return String.Empty;
}
Тогда в вашем контроллере:
[OutputCache(VaryByParam = "None", VaryByCustom="Host", Duration = 14400)]
public ActionResult Index()
{
return View();
}
Другие советы
Проверьте Варибираюсь параметр Outputcache. Директива.
Чтобы определить, что произойдет, когда вызывается Varybycustom, вам нужно переопределить метод getWarybycustomStomStoms:
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-адреса и вернуть его. Каждое другое значение производит другой кеш.
Емкость