我有一些需要动态生成的css文件(为什么很复杂,但是这是必要的)。简单的解决方案是将文件更改为aspx文件,并根据需要使用<%= %>标记注入所需的值。
这个方法很好用,直到我们涉及缓存。似乎浏览器和服务器拒绝缓存该文件。我尝试过操纵各种http缓存头,但浏览器总是在每次页面加载时重新获取文件。服务器始终以HTTP 200(和正确的内容)响应,而不是304(文件未更改)。
如何说服浏览器和服务器缓存这些动态css文件?
示例文件:
这个方法很好用,直到我们涉及缓存。似乎浏览器和服务器拒绝缓存该文件。我尝试过操纵各种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 here...
相关的服务器响应头如下:
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