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

aspnet网站开发例题jquery网站发展历史时间轴

aspnet网站开发例题,jquery网站发展历史时间轴,vue响应式网站开发,wordpress带会员的主题文章目录 项目地址一、Http Cache1.1 服务注册1.2 Validation with ETag1. 添加ETagMiddleware中间件2. 创建内存ETag存储器3. 服务注册4. 测试二、使用ETag实现乐观锁2.1 添加乐观锁方法2.2 修改Controller2.3 测试乐观锁三、Rate Limiting3.1 添加速率控制服务1. 在Program里…

文章目录

  • 项目地址
  • 一、Http Cache
    • 1.1 服务注册
    • 1.2 Validation with ETag
      • 1. 添加ETagMiddleware中间件
      • 2. 创建内存ETag存储器
      • 3. 服务注册
      • 4. 测试
  • 二、使用ETag实现乐观锁
    • 2.1 添加乐观锁方法
    • 2.2 修改Controller
    • 2.3 测试乐观锁
  • 三、Rate Limiting
    • 3.1 添加速率控制服务
      • 1. 在Program里添加服务
      • 2. 添加AddRateLimiting方法
      • 3. 使用
      • 4. 弊端
  • 四、Idempotent Request
    • 4.1 创建IdempotentRequestAttribute特性
    • 4.2 使用
    • 4.3 测试


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、Http Cache

缓存的类型:
1. Client cache
2. Gateway cache(reverse poxy)
3. Proxy cache(CDN)

1.1 服务注册

  1. 注册cache服务
    在这里插入图片描述
  2. 注册中间件

在这里插入图片描述

1.2 Validation with ETag

  • 使用Rest api 返回ETag头部进行缓存
    在这里插入图片描述
    流程:
    1. 第一次请求,没有缓存,数据库查询后,返回并且添加ETag响应头
    2. 响应头存储在浏览器缓存,如果还是相同的请求或者没有更改,则返回304not modified,并从内存缓存里拿数据
    3. 如果更改或者没有缓存数据,则返回新的ETag

1. 添加ETagMiddleware中间件

  • 用于生成Etag头部和判断响应
namespace DevHabit.Api.Middleware;//定义一个中间件,表示请求管道中的下一个中间件
public sealed class ETagMiddleware(RequestDelegate next)
{public async Task InvokeAsync(HttpContext context, InMemoryETagStore eTagStore){//1.如果当前请求方法是 POST、PUT、PATCH 或 DELETE,就跳过 ETag 逻辑if (CanSkipETag(context)){await next(context);return;}//2.获取当前请求的 URI,用作标识资源的 key,稍后要用来生成和比对 ETag。string resourceUri = context.Request.Path.Value!;//3.从请求头中读取客户端带来的 If-None-Match ETag,用于判断资源是否修改过。去掉引号是为了统一格式。string? ifNoneMatch = context.Request.Headers.IfNoneMatch.FirstOrDefault()?.Replace("\"", "");//4.如果请求方法是 GET 或 HEAD,就从 ETag 存储中获取当前资源的 ETagStream originalStream = context.Response.Body; //获取原始响应流using var memoryStream = new MemoryStream(); //创建一个内存流,用于缓存响应内容context.Response.Body = memoryStream; //将响应流写入内存流,以便后续读取响应内容//5.执行请求管道中的下一个中间件(或控制器),并把响应写入 memoryStream 中gawait next(context); //6. 如果响应状态码是 200 OK,并且响应内容类型是 JSON,就计算 ETagif (IsETaggableResponse(context)){memoryStream.Position = 0; //将内存流位置重置到开头byte[] responseBody = await GetResponseBody(memoryStream); //读取内存流中的响应内容string eTag = GenerateETag(responseBody); //计算 ETageTagStore.SetETag(resourceUri, eTag); //将 ETag 存储到 ETag 存储中context.Response.Headers.ETag = $"\"{eTag}\""; //将 ETag 添加到响应头中context.Response.Body = originalStream; //将响应流恢复为原始响应流//9. 如果 ETag 存储中已经有当前资源的 ETag,并且和计算出来的 ETag 一致,就返回 304 Not Modifiedif (context.Request.Method == HttpMethods.Get && ifNoneMatch == eTag) {context.Response.StatusCode = StatusCodes.Status304NotModified;context.Response.ContentLength = 0;return;}}//如果内容有更新,复制缓冲的响应内容到原始响应流中,让客户端收到响应。memoryStream.Position = 0;await memoryStream.CopyToAsync(originalStream);}//判断当前响应是否适合使用 ETag 进行缓存处理private static bool IsETaggableResponse(HttpContext context

文章转载自:

http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://00000000.jqbpn.cn
http://www.dtcms.com/wzjs/603220.html

相关文章:

  • 网站描文本怎么做学服装设计后悔死了
  • 做微整的网站网站页面跳转怎么做
  • 外贸网站的建设小程序制作公司
  • 零下一度网站建设88建网站
  • 邯郸移动网站建设报价程序开发工程师需要哪些能力
  • 实惠的制作网站武安 制作网站
  • 南京网站设计我选柚米科技pc端兼手机端网站模板
  • 建模网站素材php网站成品
  • 中国水电建设集团港航建设有限公司网站极家装修怎么样啊
  • 英文网站建设比较好电商公司经营范围
  • 学做美食视频在哪个网站网站推广策划案效果好
  • 做音频后期的素材网站网站源码网址修改
  • 郑州便宜网站建设费用电子商务专业就业方向及前景分析
  • 百元做网站无代码网站开发
  • 潍坊学校网站建设网站开发人员的工资
  • 没网站可以做百度推广吗做网站用的符号
  • 没有网站做分类信息群发旅游网站建设目标
  • 大连学网站制作西安的最新消息
  • 响应式网站框架腾讯学生机wordpress
  • 江西汽车网站建设建湖建网站的公司
  • 北仑网站推广简易网址制作
  • 网站开发合同模板免费手游推广代理平台渠道
  • 网站建站在线制作网站建设制作要学什么
  • 深圳网站优化运营公众微信绑定网站帐号
  • 怎么网站显示翻页代码电子邮箱网站建设
  • 合肥专业的房产网站建设如何建立公司自己的网站
  • 网站贸易表格怎么做搭建网站赚钱吗
  • 广州一起做网店属于什么网站网站接做网站单
  • 手机网站居中显示全国网站备案拍照
  • 电子商业网站建设步骤私活网站开发多少钱