1、设置浏览器缓存
使用中间件
services.AddResponseCaching(options => { //是否区分请求路径大小写 options.UseCaseSensitivePaths = false; });
app.UseResponseCaching();
在接口上或者控制器上设置缓存
/// <summary> /// Task方法 /// </summary> /// <param name="val"></param> /// <returns></returns> [HttpGet("/GetTask")] [ResponseCache(Duration = 5, Location = ResponseCacheLocation.Any, NoStore = false)] public Task<string> GetTask (string val) { return Task.FromResult( $"{val}:{DateTime.Now.Ticks}"); }
Duration :缓存时间(s)
Location : 获取或设置必须缓存来自特定URL的数据的位置
NoStore : 获取或设置一个值,该值决定是否存储数据或不是。当设置为真时,它将“Cache-control”头设置为“no-store”。忽略了“Location”参数用于指定除“None”以外的值。忽略了“持续时间”参数。
只能缓存Get请求
2、对响应进行压缩
services.Configure<GzipCompressionProviderOptions>(provider => provider.Level = CompressionLevel.Optimal); services.AddResponseCompression(options => { //设置Https请求是否被压缩 options.EnableForHttps = true; //设置优先被使用的压缩算法 options.Providers.Add<GzipCompressionProvider>(); //设置需要被压缩的文件格式 options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[] { "" }); //设置这些格式不被压缩 options.ExcludedMimeTypes = new[] { "image/png", "image/jpg", }; });
//必须放在app.UseStaticFiles()前面,否则请求会先进入静态文件管道并返回响应 app.UseResponseCompression();