标签: outputcache

缓存策略,输出缓存与数据缓存还是两者兼而有之?

我正在开发一个ASP.NET MVC项目,我已经开始考虑我的缓存策略了.我试图让我的框架尽可能开放用于缓存.

根据我在Scott Hanselman播客期间听到的内容,StackOverflow.com使用页面输出缓存并将内容拉链并将其放入RAM中.这听起来像是对用户范围的缓存非常有用,但对于像个性化页面这样的东西,你必须为每个用户缓存一个版本,并且可能很快失控.

所以,对于缓存策略.哪个应该使用,输出缓存,数据缓存还是组合?我的第一个想法是两者,但就缓存依赖性而言,它听起来有点复杂.

architecture asp.net asp.net-mvc caching outputcache

8
推荐指数
2
解决办法
6724
查看次数

如何在ASP.NET应用程序中设置S-MaxAge CacheControl值?

我想设置缓冲能力的的ASP.NET资源.所以,如果我转到/富/显示它会显示一些资源视图,并缓存这几个小时(例如).为此,我使用了OutputCache属性来装饰我的Action方法.可以在web.config文件中找到此缓存的详细信息(针对此操作方法).

当我设置此输出缓存时,它正确设置maxage value..但s-maxage值为0. WTF?

这是代码......

[Authorize]
[OutputCache(CacheProfile = "SomeController_Show")]
public ActionResult Show(){ ... }
Run Code Online (Sandbox Code Playgroud)

这是配置文件的片段..

<add name="SomeController_Show" duration="3600" varyByParam="authkey;format;blah"  />
Run Code Online (Sandbox Code Playgroud)

以及回复的片段......

Cache-Control:public, max-age=3576, **s-maxage=0**
Content-Length:746
Content-Type:application/json; charset=utf-8
Date:Tue, 10 Aug 2010 00:42:17 GMT
Expires:Tue, 10 Aug 2010 01:41:53 GMT
Last-Modified:Tue, 10 Aug 2010 00:41:53 GMT
Server:Microsoft-IIS/7.0
Vary:*
Run Code Online (Sandbox Code Playgroud)

请注意如何正确设置maxage但是s-maxage不是?有人可以帮助我吗?

asp.net-mvc caching outputcache s-maxage

8
推荐指数
1
解决办法
2503
查看次数

IIS(动态和静态)缓存,OutPutCache和浏览器缓存之间有什么区别

有什么区别IIS (Dynamic and Static)缓存,OutPutCachebrowser cache

我想我对他们感到困惑.

浏览器是否缓存所有js或css文件?

如果我使用IIS缓存但不使用会发生OutputCache什么?

如果我同时使用两者会发生什么?

asp.net iis iis-7 caching outputcache

8
推荐指数
1
解决办法
4714
查看次数

php apc_fetch所有ids

有没有办法获取和打印存储在apc存储中的所有数据?

我需要这样做以进行测试和调试.

我知道我可以通过执行来检索特定数据apc_fetch(id),但我不知道通过传递(作为示例)来检索所有数据的任何方法*

php caching outputcache apc

8
推荐指数
1
解决办法
4903
查看次数

OutputCache VaryByCustom cookie值

有没有办法根据cookie值设置OutputCache的值?

为了简单起见,这是我的方法

[OutputCache(Duration = 600, VaryByParam = "None", VaryByCustom = "ztest")]
public ViewResult Index()
{
     return View();
}
Run Code Online (Sandbox Code Playgroud)

我的Global.asax有这个(为了覆盖GetVaryByCustomString方法

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    if (custom == "ztest")
    {
        HttpCookie ztest = context.Request.Cookies["ztest"];
        if (ztest != null)
        {
            return ztest.Value;
        }
    }

    return base.GetVaryByCustomString(context, custom);
}
Run Code Online (Sandbox Code Playgroud)

我可以验证我的浏览器是否有ztest cookie,但是当我调试Index方法时,我每次都会遇到断点(意味着缓存不起作用).

HttpResponse没有出站cookie,所以这一点不适用:https://msdn.microsoft.com/en-us/library/system.web.httpcookie.shareable(v=vs.110).aspx

如果给定的HttpResponse包含一个或多个出站cookie,并且Shareable设置为false(默认值),则将抑制响应的输出缓存.这可以防止包含潜在敏感信息的cookie缓存在响应中并发送到多个客户端.要允许缓存包含cookie的响应,请为响应正常配置缓存,例如使用OutputCache指令或MVC的[OutputCache]属性,并设置所有出站cookie以使Shareable设置为true.

c# asp.net cookies caching outputcache

8
推荐指数
1
解决办法
725
查看次数

在ASP.NET中,是否可以按主机名输出缓存?即varybyhost或varbyhostheader?

我有一个网站,有许多主机标题.主题和数据取决于主机标头,不同的主机加载不同的外观网站.

所以让我们假设我有一个名为"Foo"的网站,它返回搜索结果.相同的代码运行下面列出的两个站点.它是相同的服务器和网站(使用主机标头)

  1. www.foo.com
  2. www.foo.com.au

现在,如果我去.com,该网站以蓝色为主题.如果我去.com.au网站,它的主题是红色.

根据主机名,相同搜索结果的数据不同:美国结果.com和澳大利亚结果.com.au.

如果我想使用OutputCaching,可以通过主机名来处理和分区吗?

我担心一个人访问该.com网站后(正确返回美国结果),第二个访问该.com.au网站并搜索相同数据的人将获得该.com网站的主题和结果.

缓存可能吗?

asp.net outputcache hostheaders vary

7
推荐指数
2
解决办法
1778
查看次数

启动asp.net输出缓存

有没有办法以编程方式填充asp.net输出缓存?我已经调查了缓存API,似乎找不到明显的方法来做到这一点.有没有人尝试过这样的东西?如果是这样,你使用了什么方法?

asp.net outputcache

7
推荐指数
1
解决办法
667
查看次数

ASP.NET MVC针对每个操作点击outputcache

我们使用ASP.NET MVC 3和AppFabric作为分布式缓存解决方案运行相当大的站点构建.我们已经实现了一个自定义OutputCacheAdapter来使用我们的AppFabric集群.

我们看到ASP.NET为每个操作调用OutputCacheProvider.Get()方法,即使该操作未使用@OutputCacheAttribute进行修饰.

如果您使用默认的outputcacheprovider,那就不是什么问题,但是当您运行驻留在单独机器上的outputcacheprovider时.

asp.net-mvc outputcache

7
推荐指数
1
解决办法
882
查看次数

如果页面上存在异常,则输出缓存无效

我在其中一个页面中启用了输出缓存,如下所示:

<%@ OutputCache Duration="300" VaryByParam="*"%>
Run Code Online (Sandbox Code Playgroud)

问题是有时会出现异常,我们会显示相应的消息.但是此页面随后被缓存,其他用户也看到了异常消息.例如,假设数据库超时,因此抛出了Sql异常.捕获此异常并显示一条消息"连接到数据库时出错.请在一段时间后尝试".现在,此消息被缓存并显示给其他用户,甚至不查询数据库.

所以我想要做的是在有异常的情况下使特定的输出缓存无效,或者在有异常时不缓存.如何才能做到这一点?

这适用于ASP.NET 3.5 Webforms.

asp.net caching webforms outputcache

7
推荐指数
1
解决办法
973
查看次数

Outputcache 和 410 状态响应不起作用

我想为执行一些数据库查找的页面抛出 410 状态代码。然而,outputcache 似乎只缓存 200 个状态代码页。有没有办法解决?我想将 410 页缓存一段时间,这样数据库就无法获取它,但它只是跳过缓存并再次访问数据库。

[OutputCache(Duration = 3600, VaryByParam = "eventid,teamid,v,r")]
    public virtual ActionResult Team(int? teamId, int? eventId)
    {
Run Code Online (Sandbox Code Playgroud)

.net asp.net-mvc caching outputcache http-status-code-410

7
推荐指数
1
解决办法
192
查看次数