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

做个门户网站多少钱怎么登陆公司网站的后台

做个门户网站多少钱,怎么登陆公司网站的后台,vps 网站发布,肇庆建设工程备案的网站我们利用ASP.NET开发的大部分API都是为了对外提供资源#xff0c;对于不易变化的资源内容#xff0c;针对某个维度对其实施缓存可以很好地提供应用的性能。《内存缓存与分布式缓存的使用》介绍的两种缓存框架#xff08;本地内存缓存和分布式缓存#xff09;为我们提供了简…我们利用ASP.NET开发的大部分API都是为了对外提供资源对于不易变化的资源内容针对某个维度对其实施缓存可以很好地提供应用的性能。《内存缓存与分布式缓存的使用》介绍的两种缓存框架本地内存缓存和分布式缓存为我们提供了简单易用的缓存读写编程模式本篇介绍的则是针对针对HTTP响应内容实施缓存ResponseCachingMiddleware中间件赋予我们的能力[本文节选《ASP.NET Core 6框架揭秘》第22章]。目录[S2201]基于路径的响应缓存源代码[S2202]基于指定的查询字符串缓存响应源代码[S2203]基于指定的请求报头缓存响应源代码[S2204]缓存屏蔽源代码[S2201]基于路径的响应缓存为了确定响应内容是否被缓存如下的演示程序针对路径“/{foobar?}”注册的中间件会返回当前的时间。如代码片段所示我们调用UseResponseCaching扩展方法对ResponseCachingMiddleware中间件进行了注册 AddResponseCaching扩展方法则注册了该中间件依赖的服务。using Microsoft.Net.Http.Headers;var app  WebApplication.Create(); app.UseResponseCaching(); app.MapGet(/{foobar}, Process); app.Run();static DateTimeOffset Process(HttpResponse response) {response.GetTypedHeaders().CacheControl  new CacheControlHeaderValue{Public  true,MaxAge  TimeSpan.FromSeconds(3600)};return DateTimeOffset.Now; }终结点处理方法Process在返回当前时间之前添加了一个Cache-Control响应报头并且将它的值设置为“public, max-age3600”public表示缓存的是可以被所有用户共享的公共数据而max-age则表示过期时限单位为秒。要证明整个响应的内容是否被缓存只需要验证在缓存过期之前具有相同路径的多个请求对应的响应是否具有相同的主体内容。GET http://localhost:5000/foo HTTP/1.1 Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 02:13:39 GMT Server: Kestrel Cache-Control: public, max-age3600 Content-Length: 352021-12-14T10:13:39.883880608:00GET http://localhost:5000/foo HTTP/1.1 Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 02:13:39 GMT Server: Kestrel Age: 3 Cache-Control: public, max-age3600 Content-Length: 352021-12-14T10:13:39.883880608:00GET http://localhost:5000/bar HTTP/1.1 Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 02:13:49 GMT Server: Kestrel Cache-Control: public, max-age3600 Content-Length: 352021-12-14T10:13:49.015303108:00GET http://localhost:5000/bar HTTP/1.1 Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 02:13:49 GMT Server: Kestrel Age: 2 Cache-Control: public, max-age3600 Content-Length: 352021-12-14T10:13:49.015303108:00如下所示的四组请求和响应是在不同时间发送的其中两个和后两个请求采用的请求路径分别为“/foo”和“/bar”。可以看出采用相同路径的请求会得到相同的时间戳意味着后续请求返回的内容来源于缓存,并且说明了响应内容默认是基于请求路径进行缓存的。由于请求发送的时间不同所以返回的缓存副本的“年龄”对应响应报头Age也是不同的。[S2202]基于指定的查询字符串缓存响应一般来说对于提供资源的API来说请求的路径可以作为资源的标识所以请求路径决定返回的资源这也是响应基于路径进行缓存的理论依据。但是在很多情况下请求路径仅仅是返回内容的决定性因素之一即使路径能够唯一标识返回的资源但是资源可以采用不同的语言来表达也可以采用不同的编码方式所以最终的响应的内容还是不一样的。在编写请求处理程序的时候我们还经常根据请求携带的查询字符串来生成响应的内容。以我们的演示的返回当前时间戳的实例来说我们可以利用请求携带的查询字符串“utc”或者请求报头“X-UTC”来决定返回的是本地时间还是UTC时间。using Microsoft.AspNetCore.Mvc; using Microsoft.Net.Http.Headers;var app  WebApplication.Create(); app.UseResponseCaching(); app.MapGet(/{foobar?}, Process); app.Run();static DateTimeOffset Process(HttpResponse response,[FromHeader(Name  X-UTC)] string? utcHeader,[FromQuery(Name utc)]string? utcQuery) {response.GetTypedHeaders().CacheControl  new CacheControlHeaderValue{Public  true,MaxAge  TimeSpan.FromSeconds(3600)};return Parse(utcHeader) ?? Parse(utcQuery) ?? false? DateTimeOffset.UtcNow : DateTimeOffset.Now;static bool? Parse(string? value) value  null? null: string.Compare(value, 1, true)  0 || string.Compare(value, true, true)  0; }由于响应缓存默认采用的Key是派生于请求的路径但是对于我们修改过的这个程序来说默认的这个缓存键的生成策略就有问题了。程序启动后我们采用路径“/foobar”发送了如下两个请求其中第一个请求返回了实时生成的本地时间08:00表示北京时间采用的时区对于第二个情况下我们本来希望指定“utc”查询字符串以返回一个UTC时间但是我们得到却是缓存的本地时间。GET http://localhost:5000/foobar HTTP/1.1 Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 02:54:54 GMT Server: Kestrel Cache-Control: public, max-age3600 Content-Length: 352021-12-14T10:54:54.684564608:00GET http://localhost:5000/foobar?utctrue HTTP/1.1 Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 02:54:54 GMT Server: Kestrel Age: 7 Cache-Control: public, max-age3600 Content-Length: 352021-12-14T10:54:54.684564608:00[S2203]基于指定的请求报头缓存响应要解决这个问题必须要让我们希望的缓存维度作为缓存键的组成部分。就我们演示程序来说就是得让响应缓存的Key不仅仅包括请求的路径还应该包括查询字符串“utc”和请求报头“X-UTC”的值。为此我们对演示的程序进行了相应的修改。如下面的代码片段所示我们从当前HttpContext上下文中提取出IResponseCachingFeature特性并将设置了它的VaryByQueryKeys属性使之包含了参与缓存的查询字符串的名称“utc”。为了让自定义请求报头“X-UTC”的值也参与缓存我们将“X-UTC”作为Vary响应报头的值。using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.ResponseCaching; using Microsoft.Net.Http.Headers;var app  WebApplication.Create(); app.UseResponseCaching(); app.MapGet(/{foobar?}, Process); app.Run();static DateTimeOffset Process(HttpContext httpContext,[FromHeader(Name  X-UTC)] string? utcHeader,[FromQuery(Name utc)]string? utcQuery) {var response  httpContext.Response;response.GetTypedHeaders().CacheControl  new CacheControlHeaderValue{Public  true,MaxAge  TimeSpan.FromSeconds(3600)};var feature  httpContext.Features.GetIResponseCachingFeature()!;feature.VaryByQueryKeys  new string[] { utc };response.Headers.Vary  X-UTC;return Parse(utcHeader) ?? Parse(utcQuery) ?? false ? DateTimeOffset.UtcNow : DateTimeOffset.Now;static bool? Parse(string? value) value  null? null: string.Compare(value, 1, true)  0 || string.Compare(value, true, true)  0; }对于我们修正过演示程序来说请求查询字符串“utc”的值会作为响应缓存键的一部分我们在重启应用后发送了如下针对“/foobar”的四个请求。前两个请求和后两个请求采用相同的查询字符串“?utctrue”和“?utcfalse”所以后一个请求会返回缓存的内容。GET http://localhost:5000/foobar?utctrue HTTP/1.1 Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 02:59:23 GMT Server: Kestrel Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 352021-12-14T02:59:23.054099900:00GET http://localhost:5000/foobar?utctrue HTTP/1.1 Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 02:59:23 GMT Server: Kestrel Age: 3 Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 352021-12-14T02:59:23.054099900:00从上面给出的报文的内容可以看出响应报文具有一个值为“X-UTC”的Vary报头它告诉客户端响应的内容会根据这个名为“X-UTC”的请求报头进行缓存。为了验证这一点我们在重启应用后针对“/foobar”发送了如下四个请求前两个请求和后两个请求采用相同的X-UTC“X-UTC: True”和“X-UTC: False”所以后一个请求会返回缓存的内容。GET http://localhost:5000/foobar HTTP/1.1 X-UTC: True Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 03:05:06 GMT Server: Kestrel Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 342021-12-14T03:05:06.97707800:00GET http://localhost:5000/foobar HTTP/1.1 X-UTC: True Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 03:05:06 GMT Server: Kestrel Age: 3 Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 342021-12-14T03:05:06.97707800:00GET http://localhost:5000/foobar HTTP/1.1 X-UTC: False Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 03:05:17 GMT Server: Kestrel Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 352021-12-14T11:05:17.006803608:00GET http://localhost:5000/foobar HTTP/1.1 X-UTC: False Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 03:05:17 GMT Server: Kestrel Age: 19 Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 352021-12-14T11:05:17.006803608:00响应缓存通过复用已经生成的响应内容来提升性能但不意味任何请求都适合以缓存的内容予以回复请求携带的一些报头会屏蔽掉响应缓存。或者更加准确的说法是客户端请求携带的一些报头会“提醒”服务端当前场景需要返回实时内容。比如携带Authorization报头的请求默认情况下将不会使用缓存的内容予以回复下面的请求/响应体现了这一点。GET http://localhost:5000/foobar HTTP/1.1 Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 03:13:10 GMT Server: Kestrel Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 352021-12-14T11:13:10.460592408:00GET http://localhost:5000/foobar HTTP/1.1 Authorization: foobar Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 03:13:17 GMT Server: Kestrel Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 352021-12-14T11:13:18.091803308:00关于Authorization请求报头与缓存的关系它与前面介绍的根据指定的请求报头对响应内容进行缓存是不一样的当ResponseCachingMiddleware中间件在处理请求时只要请求携带了此报头缓存策略将不再使用。如果客户端对数据的实时性要求很高那么它更希望服务总是返回实时生成的内容这种情况下它利用利用携带的一些请求报头向服务端传达这样的意图此时一般会使用到报头“Cache-Control:no-cache”或者“Pragma:no-cache”。这两个请求报头对响应缓存的屏蔽作用体现在如下所示的四组请求/响应中。GET http://localhost:5000/foobar HTTP/1.1 Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 03:15:16 GMT Server: Kestrel Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 342021-12-14T11:15:16.42349608:00GET http://localhost:5000/foobar HTTP/1.1 Cache-Control: no-cache Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 03:15:26 GMT Server: Kestrel Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 352021-12-14T11:15:26.770129808:00GET http://localhost:5000/foobar HTTP/1.1 Pragma: no-cache Host: localhost:5000HTTP/1.1 200 OK Content-Type: application/json; charsetutf-8 Date: Tue, 14 Dec 2021 03:15:36 GMT Server: Kestrel Cache-Control: public, max-age3600 Vary: X-UTC Content-Length: 352021-12-14T11:15:36.528353608:00
http://wiki.neutronadmin.com/news/259761/

相关文章:

  • 网站建设规划书 简版湛江快速网站建设在哪里做
  • 做网站哪种语言好ps做网站分辨率自适应
  • 网站建设全教程住房和城乡建设部网站执业资格注册中心
  • 度假村网站建设施工企业生产副总经理年终总结
  • seo引擎搜索网站关键词centos wordpress 2m
  • 做网站的可以信吗做盗版频网站
  • 建设银行网站招聘官网做wps的网站赚钱
  • 制作自己的网站多少钱西乡做网站价格
  • 百度收录网站但首页快照不更新成全视频免费观看在线看电视
  • 商城网站可以不备案吗免费发布信息网站平台
  • 如何用手机建设网站网站单页
  • 佛山网站网络设计总结
  • 个人怎么做微信公众号和微网站深圳网站建设费用大概
  • 烟台高端网站建设公司2345浏览器网址
  • 电脑网站怎么做网站备案ip地址段
  • 购物网站开发英文文献成全视频免费观看在线看128集
  • 赣榆做网站制作服务网站
  • 中小企业网站建设教程怎么给公司做推广
  • 网站制作com中国做的手机系统下载网站
  • 无锡网站策划台州网站制作定制
  • asp 做网站的缺点微信防红短链接生成
  • 做网站用的军事图片哪位大神推荐一下好网站
  • 临安规划建设局网站医疗器械四大龙头企业
  • C 如何做简易网站佛山本科网站建设
  • 合肥网站建设市场分析园林景观设计公司设计理念
  • 如何加强网站建设和信息宣传网站建设中下载
  • 大学电子商务网站建设方案查询网站后台地址
  • 免费做电子邀请涵的网站合肥市建设工程市场信息价
  • 如何攻击织梦做的网站方法舆情服务网站
  • 教育类集群网站建设搭建网站的过程