如何设置设置过期和缓存控制:仅在ASP.NET中的图像的max-age标头?

时间:2013-04-22 10:43:20

标签: asp.net caching browser-cache

我有一个网站,其文件是静态的,如Jquery库,图像和其他JS文件。

因此,我希望专门为这些资源设置到期时间,以便可以从用户缓存中轻松检索这些资源,而无需缓存其他静态资源

任何人都可以在asp.net 3.5中建议一种方法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您应该在文件夹中分隔这些静态文件,并直接在IIS上配置它

这是IIS6的一个示例:

http://www.websiteoptimization.com/secrets/advanced/9-7-content-expiration-IIS.html

或者通过代码,您可以实现IHttpModule

public class CacheExpiresModule : IHttpModule
{
    public void Dispose() { }

    public void Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(context_BeginRequest);
    }

    void context_BeginRequest(object sender, EventArgs e)
    {
        HttpContext context = HttpContext.Current;
        string url = context.Request.Url.ToString();

        if (url.Contains("/Static/"))
        {
            context.Response.Cache.SetExpires(DateTime.Now.AddYears(30));
            context.Response.Cache.SetMaxAge(TimeSpan.FromDays(365));
        }
    }
}

并在web.config上配置它

答案 1 :(得分:0)

您可以利用浏览器缓存通过http标头设置过期数据。 Google Developers / Page Speed Insight对此流程进行了简要说明:

https://developers.google.com/speed/docs/insights/LeverageBrowserCaching