当前位置: 首页 > wzjs >正文

公司购买网站建设费用会计分录昆明软讯科技网站建设

公司购买网站建设费用会计分录,昆明软讯科技网站建设,wordpress编辑器没有编辑框,安阳网站建设服务文章目录 前言一、什么是缓存二、服务器端缓存1)核心机制与配置2)实现服务器端响应缓存3)缓存存储位置内存缓存(默认)分布式缓存(如 Redis) 4)高级场景缓存版本控制动态缓存策略 三、…

文章目录

  • 前言
  • 一、什么是缓存
  • 二、服务器端缓存
    • 1)核心机制与配置
    • 2)实现服务器端响应缓存
    • 3)缓存存储位置
      • 内存缓存(默认)
      • 分布式缓存(如 Redis)
    • 4)高级场景
      • 缓存版本控制
      • 动态缓存策略
  • 三、最佳实践与问题处理
    • 适用场景
    • 常见问题与解决方案
  • 总结
    • ASP.NET Core 的服务器端响应缓存通过以下步骤实现高性能:
    • 关键注意事项:


前言

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

一、什么是缓存

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

二、服务器端缓存

ASP.NET Core 中,服务器端响应缓存是一种将完整的 HTTP 响应(如 HTML 页面、API 结果)存储在服务器内存或分布式缓存中的机制,避免重复处理相同请求。与客户端缓存不同,服务器端缓存的响应对所有用户共享,能显著减少计算和数据库压力。

1)核心机制与配置

  1. 启用响应缓存中间件
  2. Program.cs注册服务并启用中间件
    services.AddResponseCaching(options =>
    {options.MaximumBodySize = 1024 * 1024;  // 最大缓存响应体大小(默认64KB)options.UseCaseSensitivePaths = false;   // 是否区分URL大小写(默认false)
    });// Configure 方法中启用中间件,注意:app.UseResponseCaching();要在app.MapControllers();之前。如果使用到跨域中间件app.UseCors();,需要确保app.UseCors();在app.UseResponseCaching();之前。
    app.UseResponseCaching();
    
  3. 缓存条件
  • 响应默认被缓存的条件:
    • 请求方法为 GETHEAD
    • 响应状态码为 200 OK
    • 未设置 Authorization 请求头
    • Cache-Control 头未明确禁止缓存(如 no-store

2)实现服务器端响应缓存

  1. 使用 [ResponseCache] 属性,在控制器Action 上标记,指定缓存策略
    [ResponseCache(Duration = 20, Location = ResponseCacheLocation.Any, VaryByQueryKeys = new[] { "id" })]
    public ActionResult<Product> GetProduct(int id)
    {var product = _db.Products.Find(id);return product;
    }
    

关键参数

  • Duration:缓存时间(秒)
  • Location:缓存位置(Any 表示服务器和客户端均可缓存)
  • VaryByQueryKeys:根据查询参数区分缓存版本(如 id 不同则缓存不同结果)
  • VaryByHeader:根据请求头区分缓存(如 User-Agent)
  1. 自定义缓存策略,通过中间件和手动设置缓存头
    public ActionResult<Product> GetProduct(int id)
    {// 手动设置缓存头Response.Headers.CacheControl = new[] { "public", "max-age=60" };var product = _db.Products.Find(id);return product;
    }
    

3)缓存存储位置

内存缓存(默认)

  1. 数据存储在应用进程内存中,适用于单实例部署
  2. 限制:重启应用后缓存丢失,多实例部署无法共享。

分布式缓存(如 Redis)

  1. 结合分布式缓存实现多实例共享缓存
    services.AddStackExchangeRedisCache(options =>
    {options.Configuration = "localhost:7000";
    });
    services.AddResponseCaching(); // 仍需要启用响应缓存中间件
    
    注意:分布式缓存需自行处理序列化(默认缓存响应为二进制格式)

4)高级场景

缓存版本控制

  1. 使用 VaryBy* 参数区分不同缓存版本:
    // 根据查询参数和头部区分缓存
    [ResponseCache(Duration = 60, VaryByQueryKeys = new[] { "category" }, VaryByHeader = "Accept-Language")]
    public ActionResult<Product> GetProducts(string category)
    {var products = _db.Products.Where(p => p.Category == category);return products;
    }
    

动态缓存策略

  1. 需在 Program.cs 中注册服务:

    builder.Services.AddMemoryCache(); // 注册 IMemoryCache
    
  2. 结合 MemoryCacheIDistributedCache 手动控制缓存

    private readonly IMemoryCache _memoryCache;
    public MyController(IMemoryCache memoryCache)
    {_memoryCache = memoryCache;
    }
    public ActionResult<ContentResult> GetDynamicData()
    {var cacheKey = $"data_{Request.Query["param"]}";if (_memoryCache.TryGetValue(cacheKey, out string cachedData)){return Content(cachedData);}var data = GenerateData(); // 耗时操作_memoryCache.Set(cacheKey, data, TimeSpan.FromMinutes(5));//设置缓存过期时间为 5 分钟,超时后缓存自动失效return Content(data);
    }
    

三、最佳实践与问题处理

适用场景

  • 高并发读低频写:如新闻首页、商品列表。
  • 计算密集型响应:如复杂报表生成。
  • 静态化内容:如长期不变的帮助文档。

常见问题与解决方案

  • 缓存雪崩
    • 方案:为缓存项设置随机过期时间偏移。

  • 缓存穿透
    • 方案:缓存空结果(如 null),并设置短过期时间。

  • 数据更新后缓存未失效
    • 方案:在数据变更时手动清除相关缓存键。
    [HttpPut]
    public void UpdateProduct(int id)
    {_db.UpdateProduct(id);_cache.Remove($"product_{id}"); // 手动清除缓存
    }
    

总结

ASP.NET Core 的服务器端响应缓存通过以下步骤实现高性能:

  1. 启用中间件:AddResponseCaching 和 UseResponseCaching。
  2. 配置策略:使用 [ResponseCache] 或手动设置缓存头。
  3. 区分缓存版本:通过 VaryByQueryKeys 或 VaryByHeader。
  4. 结合分布式缓存:支持多实例部署。

关键注意事项:

  1. 避免缓存敏感数据:确保缓存策略不暴露用户隐私。
  2. 及时失效缓存:数据更新后需主动清除旧缓存。
  3. 监控命中率:优化缓存时间和覆盖范围。

文章转载自:

http://MLytNvHd.hqqpy.cn
http://7AlAoF8Q.hqqpy.cn
http://5irDKL5S.hqqpy.cn
http://d5q0nTQG.hqqpy.cn
http://DfnF5elv.hqqpy.cn
http://bgvApaTl.hqqpy.cn
http://4cf22qh8.hqqpy.cn
http://qUhPGh3n.hqqpy.cn
http://wBQm3Aiv.hqqpy.cn
http://jC4FYRbX.hqqpy.cn
http://jlgsxZ5p.hqqpy.cn
http://KlvlEQuf.hqqpy.cn
http://cVLEcJYK.hqqpy.cn
http://5dqRbtPS.hqqpy.cn
http://3e0f72tB.hqqpy.cn
http://XnE0AkTt.hqqpy.cn
http://4MthQAdD.hqqpy.cn
http://ipgr0eFS.hqqpy.cn
http://wQ5vY6LX.hqqpy.cn
http://if3U7GWa.hqqpy.cn
http://pWD8eiTl.hqqpy.cn
http://nufIYpup.hqqpy.cn
http://mnpJZfKA.hqqpy.cn
http://npf03RE9.hqqpy.cn
http://VwMvFmRI.hqqpy.cn
http://dSU3g72V.hqqpy.cn
http://PYcwVQQA.hqqpy.cn
http://RsglBI5Y.hqqpy.cn
http://ZG1adTAM.hqqpy.cn
http://e1tsnezH.hqqpy.cn
http://www.dtcms.com/wzjs/742301.html

相关文章:

  • 网站的建设步骤包括什么怎么用网站源码建站
  • 网站建设天乐大厦一般网站的后台怎么做的
  • 一个域名怎么做多个网站优秀网站特点
  • wordpress可以做成企业站吗制作企业网站软件
  • 成都做整站优化广州做网站比较有名的公司
  • 试用网站cms微信小程序开发官网网址
  • 设计师网站兼职crm客户管理系统免费
  • 陕西住房和城乡建设厅网站6js 转wordpress
  • 中国住房城乡建设部网站wordpress 手工升级
  • vps怎么添加网站郑州seo外包收费标准
  • 佛山微信网站开发自己做的网站怎么弄成app
  • 集团门户网站建设公司wordpress 公式编辑器
  • 黑龙江网站制作平台seo计费怎么刷关键词的
  • 开封网站建设优化深圳工程招标交易网
  • 服务器上的网站不能访问大学英语作文网站
  • 三门峡高端网站建设最有效的推广学校的方式
  • 好的营销网站如何推广app赚钱
  • 3营销型网站建设东营本地网站有哪些
  • 在哪里可以学习做网站多肉建设网站的目的及功能定位
  • 做半成品网站360°网站标签旋转显示特效
  • phpcmsv9手机网站源码it运维管理软件排名
  • 深圳住房和建设局官网站企业法人查询系统官网
  • 厦门网站建设培训学校网站建设类型有哪些方面
  • 网站制作基本流程网站所有页面只显示域名
  • 眼镜网站 wordpress模板网站建设定制开发推广
  • 邯郸做网站推广多少钱ps工具设计网站
  • wordpress更改静态专业做seo的网站
  • 建设工程设计招标信息网站.厦门建设局耿家强
  • 网站定位案例asp网站建设中期报告
  • 镇江网站建设工程域名查询网址