我将本文末尾的代码放到我的MVC控制器方法中: http://msdn.microsoft.com/en-us/library/windowsazure/gg680299.aspx
我为cdn配置了cname,所有工作正常,但我觉得cdn没有缓存:)
这是我的代码:
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”?
答案 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”。