Динамический CSS - проблема кеширования? - PullRequest
0 голосов
/ 08 июля 2011

Я использую HttpHandler для изменения некоторых CSS (только простых цветов) на лету, основываясь на технике, о которой я читал в SO.

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

Я ценю, что что-то где-то (IIS или браузер) выполняет какое-то полезное кэширование моей таблицы стилей, что 999 раз из 1000 - это именно то, что яхочу, однако, на этом конкретном событии страницы я хочу иметь возможность принудительной перезагрузки и заставить HttpHandler срабатывать.

Кто-нибудь понимает, как это работает и что я могу сделать?

Вещи, которые у меня естьпробовал:

    Response.Clear();
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Expires = -1;
    Response.Cache.SetExpires(DateTime.Now.AddDays(-1));

Поскольку я также использую темы ASP.NET, добавление строки запроса к таблице стилей на самом деле не простой вариант.

Кто-нибудь думает?

1 Ответ

0 голосов
/ 08 июля 2011

Эту проблему можно решить с помощью техники, которую я использую на своих сайтах, чтобы вызвать перезагрузку ресурсов после их изменения, например, после развертывания.

Добавьте ?value в конец вашего CSS-URL, где value соответствует версии или некоторому уникальному значению, которое браузер еще не видел. В моем случае я использую время модификации файла, однако в вашем случае, поскольку CSS является динамическим почти при каждой загрузке страницы, я предлагаю генерировать какое-то уникальное значение.

Поскольку URL-адрес всегда отличается, браузер всегда перезагружает его и никогда не помещается в кеш.

...