Azure CDN没有缓存控制器响应

时间:2013-10-19 12:46:58

标签: asp.net-mvc azure azure-web-roles azure-cdn

我将本文末尾的代码放到我的MVC控制器方法中: http://msdn.microsoft.com/en-us/library/windowsazure/gg680299.aspx

我为cdn配置了cname,所有工作正常,但我觉得cdn没有缓存:)

有CDN网址 http://cdn.services.idemkvrachu.ru/services/BranchLogo/82f204fe-bb1d-4204-b817-d424e1284b17/E0F4F2AE-B6C2-4516-BE7C-59B649E2C5AC?lastUpdated=635169430040919922&width=499

这是原始网址 http://prm.idemkvrachu.ru/cdn/services/BranchLogo/82f204fe-bb1d-4204-b817-d424e1284b17/E0F4F2AE-B6C2-4516-BE7C-59B649E2C5AC?lastUpdated=635169430040919922&width=499

这是我的代码:

Response.Cache.SetExpires(DateTime.Now.AddDays(14));        
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetLastModified(blob.ChangDateOfs.DateTime);
return File(bytes, format);

当我检查从原始链接和cdn接收图片的时间时 - 我发现cdn上的时间更高。

此外,我正在尝试更改blob.ChangDateOfs并比较来自cdn响应的Last-Modified标头:它会立即更改。

我的代码出了什么问题?也许这个标题打破了cdn cache Cache-Control public, no-cache =“Set-Cookie”

1 个答案:

答案 0 :(得分:1)

要解决缓存问题,您要做的第一件事就是验证您的内容是否实际被缓存了.o

为此,您可以添加值为2的X-LDebug标头。针对您的端点执行此操作的示例包括输出的相关部分:

C:\Azure\Tools\wget\bin>wget -S --header "X-LDebug:2" http://cdn.services.idemkvrachu.ru/services/BranchLogo/82f204fe-bb1d-4204-b817-d424e1284b17/E0F4F2AE-B6C2-4516-BE7C-59B649E2C5AC?lastUpdated=635169430040919922&width=499

  Cache-Control: public, no-cache="Set-Cookie"

  Set-Cookie: ASP.NET_SessionId=nnxb3xqdqetj0uhlffdmtf03; path=/; HttpOnly

  Set-Cookie: idCity=31ed5892-d3cb-45eb-bd4f-526cd65f5302; domain=idemkvrachu.cloudapp.net; 

  X-Cache: MISS from cds173.sat9.msecn.net

如您所见,您将Cache-Control标头设置为no-cache =“Set-Cookie”,然后设置cookie。这告诉CDN不要缓存内容。由于您的代码仅将缓存控件设置为Public,因此我假设您在web.config或aspx页面中有一个设置正在修改缓存控件头以添加no-cache =“Set-Cookie”。