В ASP.NET можно ли выводить кеш по имени хоста? Т.е. варбибийхост или варбихостхед?

StackOverflow https://stackoverflow.com/questions/2807610

Вопрос

У меня есть веб-сайт, который имеет ряд заголовков хоста. Тема и данные зависят от заголовка хоста, а разные хосты загружают различные саты.

Итак, давайте представим, у меня есть веб-сайт под названием «Foo», который возвращает результаты поиска. Этот же код проходит как сайты, перечисленные ниже. это тот же сервер и веб-сайт (Использование заголовков хоста)

  1. www.foo.com
  2. 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-адреса и вернуть его. Каждое другое значение производит другой кеш.

Емкость

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top