gpt4 book ai didi

asp.net mvc outputcache VaryByContentEncoding

转载 作者:行者123 更新时间:2023-12-03 21:32:42 27 4
gpt4 key购买 nike

有人可以帮助解释什么是 OutputCache VaryByContentEncoding 的用途,或者更好地举例说明其用法。

我知道这与编码压缩有关。它会根据特定的压缩方案缓存不同的响应吗?我在网上搜索,但找不到有关此属性的详细信息。

最佳答案

现在这里有一个帮助文档,其中包含一个示例,该示例解释了如何从缓存中检索输出或根据请求中存在哪些 header 来生成输出。

https://docs.microsoft.com/en-us/dotnet/api/system.web.httpcachepolicy.varybycontentencodings?view=netframework-4.8

也可以作为属性添加到这样的方法中:

        [OutputCache(Duration = 3600,
Location = OutputCacheLocation.Server,
VaryByParam = "id;page",
VaryByContentEncoding = "gzip, deflate, br, compress"
)]
[HttpGet]
public virtual async Task<ActionResult> Post(int id)
{
...
}

注意:我有 VaryByContentEncoding = "gzip, deflate, br, compress"这是在 .Net 4.6 中

尽管有文档,但使用分号分隔的列表似乎无法按预期工作,至少对于属性而言。我没有在标记中尝试过。

使用上述设置,我可以发送带有以下“Accept-Encoding” header 值的请求,并至少从 IIS Express 获取带有“Content-Encoding: gzip”的缓存响应。
  • 接受编码:gzip
  • 接受编码:gzip,放气
  • 接受编码:gzip、放气、br
  • 接受编码:deflate、br、gzip

  • 如果 中的设置使用分号分隔列表属性 那么响应永远不会被缓存。此 似乎工作:
        [OutputCache(Duration = 3600,
    Location = OutputCacheLocation.Server,
    VaryByParam = "id;page",
    VaryByContentEncoding = "gzip;deflate;br;compress"
    )]

    发送不受支持的接受编码将按预期返回未压缩但仍缓存的响应。
  • 接受编码:br

  • 注意:如果分号按预期分隔,则 VaryByParam 值确实有效。

    关于asp.net mvc outputcache VaryByContentEncoding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40649214/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com