您的位置:首页 > 科技 > IT业 > 手机制作视频用哪个软件好_线上营销是什么意思_独立站怎么建站_优化设计官网

手机制作视频用哪个软件好_线上营销是什么意思_独立站怎么建站_优化设计官网

2025/4/18 20:52:43 来源:https://blog.csdn.net/lei1083929965/article/details/147113924  浏览:    关键词:手机制作视频用哪个软件好_线上营销是什么意思_独立站怎么建站_优化设计官网
手机制作视频用哪个软件好_线上营销是什么意思_独立站怎么建站_优化设计官网

文章目录

  • 前言
  • 一、什么是缓存
  • 二、客户端缓存
    • 核心机制:HTTP缓存头
    • 1)使用[ResponseCache]属性(推荐)
    • 2)预定义缓存配置(CacheProfile)
    • 3)手动设置HTTP头
    • 4)缓存验证机制(条件请求)
  • 三、最佳实践与注意事项
    • 适用场景
    • 避免的陷阱
  • 总结


前言

在 .NET Core 中,缓存是性能优化的重要手段之一。

一、什么是缓存

缓存(Caching)是提升应用性能的关键技术,通过存储频繁访问的数据来减少计算和数据库压力。
数据库中的索引等简单有效的优化功能本质上都是缓存。

二、客户端缓存

客户端Cache-Control:核心指令,定义缓存策略:响应缓存是通过HTTP响应头(如Cache-Control、Expires)告知浏览器或其他客户端缓存资源的机制。它允许客户端(如浏览器)在本地存储资源副本,减少对服务器的重复请求。

核心机制:HTTP缓存头

客户端缓存通过以下HTTP头控制:

  • Cache-Control:核心指令,定义缓存策略:
    • public:允许代理和客户端缓存资源
    • private:仅允许客户端(浏览器)缓存
    • max-age=<seconds>:资源有效期(如max-age=3600表示1小时)
    • no-cache:每次需向服务器验证资源是否过期(使用ETag或Last-Modified)
    • no-store:禁止缓存(如敏感数据)
  • Expires:指定资源过期的绝对时间(HTTP/1.0遗留,优先级低于Cache-Control
  • ETag/Last-Modified:验证缓存有效性(服务端返回资源标识,客户端后续请求
    携带If-None-MatchIf-Modified-Since验证)

1)使用[ResponseCache]属性(推荐)

  1. 在控制器或Action方法上标记,自动生成缓存头
    [HttpGet]
    [ResponseCache(Duration = 60, Location = ResponseCacheLocation.Client)]
    public ActionResult<DateTime> GetNowTime()
    {return DateTime.Now;//var product = _db.Products.Find(id);//return product ;
    }
    
  2. 参数说明
    Duration:缓存时间()。
    Location:缓存位置(ClientAny)。

2)预定义缓存配置(CacheProfile)

  1. Program.cs中定义全局缓存模板,避免重复配置:
    builder.Services.AddControllers(options =>
    {options.CacheProfiles.Add("DefaultClientCache", new CacheProfile{Duration = 20,          // 20秒Location = ResponseCacheLocation.Client,VaryByHeader = "User-Agent"});
    });
    
  2. Controller中引用
    [ResponseCache(CacheProfileName = "DefaultClientCache")]
    [HttpGet]
    public ActionResult<DateTime> GetNowTime()
    {return DateTime.Now;
    }
    
  3. 参数说明
    Location:缓存位置(ClientAny)。
    VaryByHeader:根据请求头区分缓存版本(如User-Agent)。
    CacheProfileName:引用预定义的缓存配置。

3)手动设置HTTP头

  1. 直接操作HttpContext.Response.Headers
    [HttpGet]
    public ActionResult<DateTime> GetNowTime()
    {Response.Headers.CacheControl = new[] { "public", "max-age=20" }; // 缓存20秒return DateTime.Now;
    }
    

4)缓存验证机制(条件请求)

  1. 结合ETagLast-Modified实现高效缓存验证
    [HttpGet]
    public ActionResult<DateTime> GetNowTime()
    {//Response.Headers.CacheControl = new[] { "public", "max-age=20" }; // 缓存20秒var etag = Guid.NewGuid().ToString(); // 根据内容生成唯一标识// 检查客户端是否已有最新版本if (Request.Headers.IfNoneMatch == etag){return StatusCode(304); // 304 Not Modified}Response.Headers.ETag = etag;Response.Headers.CacheControl = "public, max-age=5";return DateTime.Now;
    }
    

三、最佳实践与注意事项

适用场景

  • 静态资源:如图片、CSS、JS文件(设置长缓存max-age=31536000)。
  • 低频变化的动态数据:如用户公共资料、商品分类。
  • 带宽敏感场景:减少重复传输大型资源。

避免的陷阱

  1. 过度缓存动态数据:导致用户看到过期信息(如实时股价)
    方案:使用no-cache或短max-age,结合ETag验证。

  2. 忽略缓存版本控制:文件更新后客户端未刷新。
    方案:为静态资源文件名添加哈希(如app-{hash}.js)。

  3. 未处理Vary头:不同设备/语言返回相同缓存。
    方案:设置VaryByHeaderVaryByQueryKeys


总结

  • 通过合理配置客户端响应缓存,可显著减少服务器负载并提升用户体验。关键点包括:
    • 使用[ResponseCache]属性或手动设置Cache-Control头部。
    • 结合ETagLast-Modified实现条件请求。
    • 避免对高频变化数据过度缓存,并通过Vary头处理多版本资源。
    • 利用浏览器工具和性能监控持续优化缓存策略。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com