gpt4 book ai didi

asp.net - ASP.NET Response.Cache.SetNoStore()与Response.Cache.SetNoServerCaching()

转载 作者:行者123 更新时间:2023-12-04 13:53:54 24 4
gpt4 key购买 nike

任何人都可以在HTTP级别分解这两种方法的功能。

我们正在处理Akamai边缘缓存,并被告知SetNoStore()将导致可能的排除,因此(例如)表单页面将始终回发到原始服务器。根据{guy},这将设置HTTP header :

Cache-Control: "no-cache, no-store"

在对表单实现此更改时,我发现了SetNoServerCaching()。从语义上讲,这似乎更有意义,并且 documentation说:“明确拒绝在原始服务器上缓存文档。”

于是我下海去了大海,看到了我能看见的东西。我尝试了这两种方法,并查看了Firebug和Fiddler中的 header 。

从我可以看出,这两种方法都设置了完全相同的Http Header。

任何人都可以解释这些方法之间是否存在实际差异,如果存在,http响应中的隐藏之处在哪里?

最佳答案

有一些区别,

SetNoStore本质上阻止了浏览器(以及任何网络资源,例如CDN)保存响应或请求的任何部分,包括保存到临时文件。这将设置NO-STORE HTTP 1.1 header

SetNoServerCaching从本质上将阻止服务器保存文件。在ASP.NET中,可能会发生几种级别的缓存:“仅数据”,“部分请求”,“整页”和“SQL数据”。此调用应停止将HTTP(全部和部分)请求保存在服务器上。此方法不应设置缓存控制 header 或不存储或不缓存。

也有

Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(new TimeSpan(1, 0, 0));

作为设置缓存的一种可能方式,这将设置content-expires header 。

对于CDN,您可能需要设置content-expires header ,以便CDN知道何时获取新内容(如果获取HIT)。您可能不希望没有缓存或没有存储,因为这会在每个HIT上导致重新访问,因此从本质上讲,您将使CDN给您带来的任何好处都无效,除非它们与最终用户的 Backbone 连接速度比当前ISP快但这将是微不足道的。

关于asp.net - ASP.NET Response.Cache.SetNoStore()与Response.Cache.SetNoServerCaching(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263530/

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