问题标签 [varybyparam]

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 投票
2 回答
2389 浏览

asp.net-mvc - 缓存在我的 ASP.NET MVC 网站中无法正常工作?

我正在尝试在我的 ASP.NET MVC 网站中使用 OutputCaching。问题是,当我尝试更改我的查询字符串参数的值时,它会返回请求的第一个项目的数据!

这是我的代码(更改了参数名称)...

  • 注意 1:ApiAuthorize - 检查名为“Key”的查询字符串参数并检查内存字典以查看它是否存在的自定义属性。
  • 注意 2:HandleErrorAsJson - 如果抛出异常,则以 json 格式返回错误消息的自定义属性。

这是我对此操作进行的两个示例调用:-

因此,第一次调用 (foo = hello world, Pew Pew) 的数据返回 200 OK。然后第二个 api 调用返回 200 OK,但包含上一次调用的数据。

另外,我没有使用任何代理服务器。如果我注释掉 OutputCache 属性,一切都很好。

我也尝试过以下(每次我需要缓存时手动列出).....

没运气 :(

请注意我需要如何确保将 API 'Key' 参数作为缓存唯一键的一部分。我不希望人们搜索相同的东西,但是如果第二个人没有正确的密钥,他们不应该得到缓存的结果,而是一条错误消息(从技术上讲,它是 401 Not Authorized,但是无论如何)...

想法?

0 投票
1 回答
993 浏览

iis - 当 VaryByParam != "none" 时,如何在客户端和服务器上缓存?

我正在寻找一种在客户端服务器上缓存页面的方法,同时通过查询字符串参数“版本”改变服务器的输出缓存。

使用此标签:

我得到这些标题:

这正是我在客户端想要的,但在服务器端它不会因“版本”而异。

同时,使用此标签:

我得到这些标题:

这正是我在服务器端想要的,但是“Vary:*”标头强制浏览器在每次请求时重新加载页面。

有没有办法在通过参数改变时在客户端和服务器端都获得缓存?

0 投票
2 回答
1553 浏览

asp.net-mvc - 为什么 OutputCache 属性需要设置 VaryByParam 参数?

我对此进行了零研究,我只是好奇。

ASP.NET MVC 中的 OutputCacheAttribute 类需要 Duration 和 VaryByParam 的值。我明白为什么需要持续时间,但不是 VaryByParam。

0 投票
1 回答
194 浏览

asp.net-mvc-2 - ASP .Net MVC 2.0 缓存问题

我在这样的动作上使用 OutputCache:

我在 Global.asax.cs 中的 RegisterRoutes 函数包含路由:

路线映射网址如下:

  • example.com/site1/catalog.xml
  • example.com/site2/catalog.xml
  • example.com/whatever/catalog.xml

到目录操作。

我相信预期的结果将是在传递每个参数的第一个请求后返回静态内容,但内容未正确缓存。我应该修改 Catalog 操作以使用参数,然后指定 VarybyParam = "none" 并在 MapRoute 函数中添加一个带有 UrlParameter.Optional 的参数,还是这里还有其他事情发生?

0 投票
1 回答
2839 浏览

c# - VaryByCustom 不适用于会话变量

我正在为带有登录系统的网站使用输出缓存。我有每个用户都可以访问的全局页面。这些页面被缓存并且还使用母版页。

我将用户登录详细信息存储在会话中。我的 global.asax 文件在这里:

我在母版页中有一个面板,对经过身份验证的用户可见。当用户登录并查看公共页面 A 时,另一个访客用户也会在页面 A 上看到经过身份验证的用户面板。如果访客首先查看页面 A,则经过身份验证的用户看不到页面 A 上的面板。

我的代码的哪一部分是错误的?我第一次使用VaryByCustom

编辑

我已经像这样修改了 global.asax,但文本文件中没有写入任何内容:

0 投票
4 回答
21593 浏览

c# - 如何实现 VaryByCustom 缓存?

我正在尝试实现根据主机缓存某些页面的功能。这是因为我可以拥有具有相同参数的页面的多个版本,并且请求方面的唯一区别是被请求的主机。

因此,例如,这两个 URL 将请求同一个页面,但它们的样式不同:

我正在浏览此处概述的示例:

http://msdn.microsoft.com/en-us/library/5ecf4420%28v=VS.90%29.aspx

但这对我来说没有意义。

我已将此添加到我的 global.asax 中:

并且示例状态“要以编程方式设置自定义字符串,请调用 SetVaryByCustom 方法并将自定义字符串传递给它以使用”,代码类似于以下内容:

问题是我不知道该怎么办。我添加了上一行,MvcApplication_EndRequest因为它看起来很有意义,但我认为这是不对的,因为当我在其中设置断点时,GetVaryByCustomString它们永远不会被击中。

有人可以告诉我我在这里缺少什么吗?或者如果我需要以不同的方式执行此操作?

编辑: RE Darin 在下面的回答,我已经用以下方式装饰了我的动作:

其中CustomOutputCacheAttribute定义为:

其中配置文件定义为:

我需要改变这个吗?

0 投票
1 回答
4789 浏览

asp.net-mvc-4 - MVC 4 子操作的 outputcache 属性不适用于 VaryByParam 值

是否无法根据查询值缓存子操作的输出?

没有varybyparam,它工作得很好。但是我需要根据参数刷新 PartialViewAboutTest。如果我将 OutPutCache 放在 About ActionREsult 上,并且 VaryByParam 正在工作。但是对于本示例中的 ParttailViewTestAbout 子操作,它不起作用,我更改了查询,但没有等待缓存持续时间很长来刷新页面......

0 投票
1 回答
868 浏览

c# - MVC - 输出缓存 - 后参数 - VaryByParam 无效

我有一个 MVC 页面被带有 2 个帖子参数的普通表单帖子击中。

供应商 ID 和还款。

在添加表单之前,我在操作上使用了 Outputcache,例如:

网址更改后一切正常。

现在我希望它也因 post 参数而异,所以我将其更改为:

这不起作用。它不会为不同的帖子参数缓存单独的结果。如果我使用不同的帖子参数请求相同的 url,我会不断获得初始缓存结果。Visual Studio 中的断点也没有被击中。

有人可以告诉我我可能做错了什么吗?

0 投票
1 回答
892 浏览

asp.net-mvc-5 - 如果参数是列表,则 VaryByParam 失败

我在 MVC 中有这个动作

未能显示正确的 HTML 与 url 之类的

这是 .NET 中 OutputCache 的已知错误导致无法识别带有列表参数的 VaryByParam 还是我遗漏了什么?

0 投票
1 回答
684 浏览

c# - 未触发 GetVaryByCustomString 方法

当我在其中放置断点时,不会触发 GetVaryByCustomString 方法。

我要缓存的操作取决于用户选择的语言:

Web.config 中的缓存配置文件:

在 Global.asax.cs 文件中:

任何帮助将不胜感激,谢谢!