问题标签 [responsecache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
86 浏览

c# - Asp.net mvc core 2.1响应缓存不起作用

使用 Visual Studio 2017,我创建了一个 asp.net core mvc 2.1 应用程序,并添加了响应缓存。

在 Index.cshtml 中,添加

@DateTime.Now.ToString()

当我在浏览器中运行应用程序时,如果我重新加载页面,输出时间会因每次刷新而异,而不是像代码中指定的那样缓存 10000 秒。

启动.cs:

索引操作:

当我检查响应头时:

缓存控制:公共,最大年龄=10000

但是,刷新时,输出每次都会变化。

任何建议表示赞赏。

编辑:如果我使用其他浏览器打开链接,我可以获得缓存副本。但是,如果我按 F5 刷新,我会得到一个更新的时间。

第二个(F5 刷新)请求头:

获取/HTTP/1.1

主机:example.com

连接:保持活动

缓存控制:max-age=0

升级不安全请求:1

用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng, / ;q=0.8

参考:https ://example.com/

接受编码:gzip、deflate、br

接受语言:en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ja;q=0.6

饼干:blablabla

0 投票
1 回答
197 浏览

.net - .net core UseResponseCompression 在放置 Vary 标头值时与 ResponseCache 属性冲突

我通过调用 app.UseResponseCompression() 在我的 .Net Core API 应用程序中使用响应压缩中间件。但是在我的 API 控制器操作之一中,我还使用了 ResponseCache 属性并将其设置为 VaryByHeader = Authorization 但我得到的响应仅获得标题 Vary: "Accept-Encoding" 这似乎是由响应压缩中间件。如果我删除中间件,则会出现 Vary: Authorization ,所以我猜测中间件与 ResponseCache 属性冲突。

我如何能够在可变标头上获得授权,同时仍然能够使用响应压缩中间件?

0 投票
2 回答
1517 浏览

asp.net-core - 防止浏览器在 .NET Core 2.2 中缓存表单值

ASP.net Core 2.2 MVC Web 应用程序

我有许多表单,我不希望浏览器在用户返回页面时缓存/​​显示任何以前输入的数据。我希望元素/表单不缓存任何信息。我不只是希望浏览器不显示以前输入的信息,出于安全原因,我希望它不被缓存。

我尝试使用以下方法装饰控制器方法:

无济于事,当我再次导航到页面/表单并开始输入时,以前输入的值继续显示为自动完成选项。

我也尝试过使用它的每一个细微差别: ASP.NET Core 中的响应缓存中间件

如今,所有浏览器如何做到这一点?

0 投票
1 回答
93 浏览

asp.net-core-mvc - 如何稍后在操作方法中覆盖 [ResponseCache] 属性?

我在默认缓存位置 = ResponseCacheLocation.Any 的操作方法上有一个 [ResponseCache] 属性。但在少数情况下,我只想将此属性覆盖到 ResponseCacheLocation.Client。

有没有比使用 Response.Headers.Add 更好的方法来覆盖操作方法代码中的属性?(甚至不确定它是否会起作用)

在单元测试中使用 DefaultHttpContext 我可以访问 GetTypedHeaders,但我无法从控制器中的真实响应中访问此方法。

0 投票
1 回答
788 浏览

asp.net-core-mvc - 使用带有字典查询字符串参数的 VaryByQueryKeys 进行响应缓存

我的 ASP.NET Core MVC 应用程序有一个带有字典参数的控制器方法,通过请求查询字符串传递:

应用程序使用 Response Caching 和VaryByQueryKeys选项来为以前服务过的请求返回缓存的响应。这适用于简单查询字符串值的要求,使用具有以下语法的方法上的属性:[ResponseCache(VaryByQueryKeys = new[] { "argName" }, Duration = 20)]

但是,我想将它与上面说明的字典参数一起使用。

它可以与字典等对象参数一起使用吗?ResponseCache在属性中指定查询字符串键列表时使用什么语法?

0 投票
0 回答
504 浏览

c# - ASP.NET Core 响应缓存中间件 - 如何停止缓存 (500) 错误响应

我在我的应用程序中实现了 ASP.NET Core 响应缓存来缓存一些 API 请求。

我已将 ResponseCaching 中间件添加到 ConfigureServices 方法中的 IServicesCollection 中,如下所示。

我在这样的配置方法中使用过它。

我还使用 ResponseCache 属性装饰了我的 Web API 操作方法,如下所示

最后,在我的 Angular 应用程序中,我也设置了缓存控制标头。

我只想用 200(OK)状态码缓存服务器响应。根据应该工作的微软文档

响应缓存中间件仅缓存导致 200 (OK) 状态代码的服务器响应。中间件会忽略任何其他响应,包括错误页面。

但是当它运行时,它也会缓存 500 个错误响应。看下面的图片 在此处输入图像描述

  1. 这可能是什么原因?
  2. 我应该怎么做才能解决这个问题。我只想缓存 200(OK) 个请求。

笔记

  • 我也尝试过使用 Chrome、Edge 和 IE 浏览器。
  • 我使用 ASP.NET Core 3.1
  • 我的前端应用程序是 Angular 7
0 投票
1 回答
365 浏览

c# - Asp.net core 2.2 响应缓存,无法将 must-revalidate 添加到缓存控制响应标头

我正在使用以下设置进行响应缓存:

在配置部分我设置:

和控制器:

一切正常。Cache-Control:public, max-age:10附加在标题中,但我也想设置 must-revalidate 和 max-stale-cache 属性,但我找不到属性来完成它。

属性在 CacheProfiles 设置、ResponseCacheAttribute 和 app.UseResponseCaching 设置中均不可用。

那可能吗?

0 投票
1 回答
56 浏览

caching - 应用设置的计时器 WSO2 API 管理器不起作用

我在公司中使用过 WSO2 API 管理器。当我更改可用方法(范围)或可用授权方法(应用程序级安全)的设置时,这些设置的应用最多需要 15 分钟(我通过 postman 测试了方法的工作)。这对于运行测试来说很多。

我按照建议更改了 deployment.toml 中的超时

我的配置中没有这样的设置,但我添加了它们并更改了 60 秒。重新启动后,设置会立即应用(即使在 60 秒后也不会)。但是,过了一会儿,设置在 15 分钟后再次应用。我完全禁用了缓存,但它也没有帮助。仅在重新启动 WSO2 后第一次快速应用设置。有没有人有同样的问题?

0 投票
1 回答
431 浏览

c# - 使用 ASP.NET Core 3.1 自定义分布式缓存进行响应缓存

我编写了一个基于 Azure BlobStorage 的自定义分布式缓存来优化页面速度。网站应该从缓存中传递缓存页面,直到缓存页面过期。这个实现应该像现有的 DistributedInMemoryCache、DistributedRedisCache 和 NCacheDistributedCache 一样工作。此处描述了操作方法https://docs.microsoft.com/de-de/aspnet/core/performance/caching/distributed?view=aspnetcore-5.0

我的问题是,在我的缓存中获取或设置的方法没有执行。

我将 IDistributedCache 实现为 DistributedBlobStorageCache 并在 ServiceCollection 扩展AddDistributedBlobStorageCache()的帮助下注册了它。所以票价这么好。

该操作具有上面的ResponseCacheAttribute,并且缓存配置文件在 Startup.cs 中设置。据我了解,系统配置是否正确,但执行分布式缓存的Get/GetAsync或Set/SetAsync方法。

0 投票
0 回答
41 浏览

webapi - .Net 5 自定义响应缓存

我们旧的 .Net 框架 API 使用 Strathweb.CacheOutput.WebApi2,它负责服务器端缓存并设置适当的客户端标头以实现一种形式的输出缓存。

在该方案中,在项目启动期间注入以下内容以创建缓存键。我们的实现有更多自定义代码附加到密钥中,但这足以开始对话。此方法使用了 RedisOutputCache。

当我们迁移到 .Net 5 时,需要类似的功能,但我想知道我的选择,因为这似乎并没有太多内容。为了使它起作用,必须覆盖 Authorization 标头的存在的规则。

谁能指出我正确的方向?我应该改用分布式缓存吗?

编辑 1

这个问题可能有点难以理解。我正在尝试使用自定义缓存键在客户端缓存,以包含 .Net 5 Web api 中的 Authorization 标头(如 Strathweb 所做的)中包含的用户 ID 和其他信息。换句话说,除了通过查询发送的内容之外,通过使用自定义缓存键,数据将同时被客户端缓存和服务器缓存。