У меня есть несколько CSS-файлов, которые должны генерироваться динамически (почему это сложно, но это необходимо). Простое решение состоит в том, чтобы изменить файлы в aspx-файлы и использовать теги <% =%> по мере необходимости, чтобы ввести нужные значения.
Это прекрасно работает, пока мы не перейдем к кешированию. Похоже, что браузер и сервер отказываются кешировать файл. Я пытался манипулировать различными заголовками кэша http, но браузер всегда повторно получает файл при каждой загрузке страницы. Сервер всегда отвечает HTTP 200 (и правильным содержимым), а не 304 (файл без изменений).
Как мне убедить браузер и сервер кэшировать эти динамические CSS-файлы?
Пример использования файла:
<html> <head> <link href="/style.aspx" type="text/css" rel="stylesheet"/>
...
Пример таблицы стилей с манипулированием заголовком кэша (без динамической части файла):
<%@ Page Language="C#" ContentType="text/css" EnableSessionState="False" %>
<%
Response.Cache.SetLastModified(new DateTime(2009, 11, 18, 10, 1, 0));
Response.Cache.SetMaxAge(TimeSpan.FromDays(30));
Response.Cache.SetETag("4ffff353ff67ff1:0");
%>
... css здесь ...
Заголовки запроса к серверу включают следующее:
If-Modified-Since Wed, 18 Nov 2009 18:01:00 GMT
Cache-Control max-age=0
И соответствующие заголовки ответа сервера:
Cache-Control private, max-age=2592000
Last-Modified Wed, 18 Nov 2009 18:01:00 GMT
Date Wed, 18 Nov 2009 19:36:07 GMT
Есть идеи?