Включить кэширование на стороне клиента для «динамического» контента (asp.net mvc 3.0) - PullRequest
1 голос
/ 27 апреля 2011

Контекст: ASP.NET MVC 3.0, .NET 4.0, C #, IIS 7

У меня длинный список имен (игровых сфер / серверов).Области хранятся в базе данных.
У меня есть действие, которое возвращает список в виде кода JSON.

Я ссылаюсь на список в моем .aspx следующим образом:

<script type="text/javascript" src='<%= Url.Action("Realms", "Data") %>'></script>

Вот сокращенное действие:

    public ActionResult Realms() {
        var realms = Data.GetRealms(...);
        var json = JsonSerialize(realms);
        return Content("realms = {0};".With(json), "text/javascript", Encoding.UTF8);
    }

Этот список меняется очень редко (раз в месяц).

Вопрос: как я могу заставить этот файл .js бытькэшированная сторона клиента?

Подробности Моя проблема в том, что этот «файл» загружается при каждом обновлении страницы и составляет 20% трафика.

Ответы [ 2 ]

4 голосов
/ 27 апреля 2011

как я могу заставить этот файл .js кэшироваться на стороне клиента?

Было бы надежнее кэшировать его на сервере, украсив действие атрибутом [OutputCache]. Если вы хотите кэшировать его на клиенте, вы можете настроить расположение кэша кэша на клиенте при использовании этого атрибута, который отправит правильный Cache-Control заголовок ответа HTTP:

[OutputCache(Location = OutputCacheLocation.Client, Duration = 20)]
public ActionResult Realms()
{
    ...
}
1 голос
/ 27 апреля 2011

Если вам необходимо кэшировать на клиенте, у вас есть несколько вариантов ...

Возможно, есть и другие вариантыно это те, которые приходят на ум.

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