【问题标题】:how to set Setting Expires and Cache-Control: max-age headers for images only in ASP.NET?如何设置 Setting Expires 和 Cache-Control: max-age headers for images only in ASP.NET?
【发布时间】:2013-04-22 10:43:20
【问题描述】:

我有一个网站,其中包含静态文件,如 Jquery 库、图像和其他 JS 文件。

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

任何人都可以建议在 asp.net 3.5 中执行此操作的方法吗?

谢谢

【问题讨论】:

    标签: asp.net caching browser-cache


    【解决方案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 上进行配置

    【讨论】:

    • 谢谢,但是有没有办法从后面的代码或web.config中做到这一点。(仅用于缓存图像图像)
    • 我认为按照链接中建议的方式应用,将缓存所有静态资源。它没有说明如何为包含静态资源的特定文件夹配置它
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 2018-10-06
      • 2021-05-12
      • 1970-01-01
      • 2012-06-30
      相关资源
      最近更新 更多