天蓝色缓存预览

时间:2012-06-18 07:45:15

标签: azure azure-caching

我在计算机上尝试了新的sdk附带的新天蓝色预览。 我将一个worker角色放在缓存预览中,并将共同定位的角色放在30%的缓存大小上。 在我的控制器上我把这段代码:

 [OutputCache(Duration=int.MaxValue, VaryByParam="none")]
    public ActionResult Index()
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";
        ViewBag.Id = Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.CurrentRoleInstance.Id;
        return View();
    }

现在我通过4个实例的模拟器运行了worker角色。结果是每次我看到一个不同的id - 这意味着输出缓存永远不会与所有4个实例一起工作(要清楚我配置输出缓存以使用缓存预览)。

只有当我将一个额外的缓存工作者角色作为专用角色时,一切都开始像它应该的那样工作。

我的问题是: 我是否需要额外的辅助角色来实际使缓存预览正常工作? - 这意味着不使用azure appfabric缓存的权衡是放置额外的机器

我做了哪些工作,它应该与网络角色一起作为合作角色吗?

感谢

编辑: 这是我web.config的另一部分

<dataCacheClients>
<tracing sinkType="DiagnosticSink" traceLevel="Error" />
<dataCacheClient name="default">
  <autoDiscover isEnabled="true" identifier="NugetTest" />
  <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />
</dataCacheClient>

如果我的标识符有NugetTest(这是我的网络角色 - 我有4个),每次切换机器时都会得到不同的缓存。如果我将标识符更改为我的worker角色,我会得到结果

2 个答案:

答案 0 :(得分:1)

您可以在应用的web.config中的提供程序配置中添加 applicationName 标记吗?如果未添加,则实例不会共享缓存。请注意 applicationName 标记。 应在专用或共同缓存方案中为webrole的web.config添加此项。 如果这可以解决您的问题,请回复。

<caching>
  <outputCache defaultProvider="DistributedCache">
    <providers>
      <add name="DistributedCache" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="<cacheName>" applicationName ="<anyName>" dataCacheClientName="<dataCacheClientName>" />
    </providers>
  </outputCache>
</caching>

答案 1 :(得分:0)

我无法重现此问题。我总是看到相同的实例,我在浏览器中使用Ctrl + F5(因此排除了浏览器缓存)。请确保您已按照http://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/中的说明配置了输出缓存提供程序。

<!-- If output cache content needs to be saved in a Windows Azure
     cache, add the following to web.config inside system.web. -->
<caching>
  <outputCache defaultProvider="DistributedCache">
    <providers>
      <add name="DistributedCache"
            type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache"
            cacheName="default"
            dataCacheClientName="default" />
    </providers>
  </outputCache>
</caching>

最诚挚的问候,

徐明。