在ASP.NET中,是否可以通过主机名输出缓存?即,varbyhost 或varbyhostheader?
我有一个包含许多主机标头的网站。主题和数据取决于主机标头,不同的主机加载不同的外观站点。
假设我有一个名为“Foo”的网站,它返回搜索结果。相同的代码运行下面列出的两个站点。它是相同的服务器和网站(使用主机标头)
www.foo.com
www.foo.com.au
现在,如果我去到 .com
,该网站的主题为蓝色。如果我访问 .com.au
网站,它的主题为红色。
根据主机名的不同,同一搜索结果的数据也不同:.com
在美国的结果和 .com.au
在澳大利亚的结果。
如果我希望使用OutputCaching
,可以通过主机名进行处理和分区吗?
我担心一个人访问 .com
网站(正确返回美国结果)后,另一个人访问 .com.au
网站并搜索相同的数据将获取 .com
网站的主题和结果。
可以缓存吗?
I've got a website that has a number of host headers. The theme and data depend on the host header, and different hosts load different looking sites.
So let's imagine I have a website called "Foo" that returns search results. The same code runs both sites listed below. It is the same server and website (using Host Headers)
www.foo.com
www.foo.com.au
Now, if I go to .com
, the site is themed in blue. If I go to the .com.au
site, it's themed in red.
And the data is different for the same search result, based on the host name: US results for .com
and Australian results for .com.au
.
If I wish to use OutputCaching
, can this be handled and partitioned by the host name?
I'm concern that after a person goes to the .com
site, (correctly returning US results) that a second person visiting the .com.au
site and searching for the same data will get the theme and results for the .com
site.
Is caching possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,您可以“因习惯而异”。我使用相同的:
将以下内容放入您的 Global.asax.cs 中:
然后放入您的控制器中:
Yes, you can "vary by custom". I am using the same:
Place the following in your Global.asax.cs:
Then in your controller:
查看 OutputCache 指令的 VaryByCustom 参数。
要定义调用 VaryByCustom 时发生的情况,您需要重写方法 GetVaryByCustomString:
关键是为要缓存的每个实例返回一个字符串值。在您的情况下,您的重写方法需要从 URL 中删除“.com”或“.com.au”部分并返回它。每个不同的值都会产生不同的缓存。
华泰
Check out the VaryByCustom parameter of the OutputCache directive.
To define what happens when VaryByCustom is called, you need to override the method GetVaryByCustomString:
The key is to return a string value for each instance you want to cache. In your case, your overrided method would need to strip the ".com" or ".com.au" part from the URL and return it. Each different value produces a different cache.
HTH