输出两个参数,自定义和编码
本文关键字:自定义 编码 参数 两个 输出 | 更新日期: 2023-09-27 18:00:40
有没有一种方法可以将ASP.NET Outputcache用于以下两者的页面:
- VaryByContentEncoding-浏览器是否支持gzip
- 根据自定义参数,在我的情况下,我使用HttpContext.Current.Request.UserLanguages获得的国家/地区;并从我函数返回的文化中获得TwoLetterISORegionName
对于一些国家,我返回相同的页面,但进行了一些小的修改,但我仍然希望这些页面被单独缓存,以便来自不同国家的访问者看到不同的社交按钮。当然,是否支持gzip很重要,因为如果浏览器支持gzip压缩,我会用gzip呈现js和css标记。
更新:我考虑使用varybycontrol,将country+gzip状态(o或1)都放入一个字符串中,并将它们写入一个隐藏字段,然后将.net告知varybycoontrol并传递该隐藏字段控件的ID。不过,我不确定这种方法。
谢谢。
使用VaryByCustom进行缓存时,您可以访问整个Request对象,并且可以从中获取标头,并根据您的需求创建自己的缓存密钥。
public override string GetVaryByCustomString(HttpContext context, string arg)
{
// Do something with Request.Headers["Accept-Encoding"] (like checking if gzip is preferred...)
return "custom-encoding-key";
}