Kentico 在CDN上实现完整的HTML页面缓存

Kentico 在CDN上实现完整的HTML页面缓存,kentico,Kentico,我们正在尝试在Kentico门户引擎站点上使用CDN实现一个完整页面的html缓存。要做到这一点,我们需要将文档的缓存控制设置为“public”,而不仅仅是将资产设置为“public”。我已经尝试在我的global.asax begin请求事件中添加下面的代码来测试它,但是由于某些原因,文档响应头缓存控件总是设置为no cache。肯蒂科是故意设定的吗?我认为是的,因为他们有自己内置的缓存机制,但是如果我们想使用CDN,我们需要将缓存设置为public。有没有办法克服这个问题 Response.

我们正在尝试在Kentico门户引擎站点上使用CDN实现一个完整页面的html缓存。要做到这一点,我们需要将文档的缓存控制设置为“public”,而不仅仅是将资产设置为“public”。我已经尝试在我的global.asax begin请求事件中添加下面的代码来测试它,但是由于某些原因,文档响应头缓存控件总是设置为no cache。肯蒂科是故意设定的吗?我认为是的,因为他们有自己内置的缓存机制,但是如果我们想使用CDN,我们需要将缓存设置为public。有没有办法克服这个问题

Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(new TimeSpan(1, 0, 0));
我还尝试修改PortalTemplate.aspx.cs以添加缓存控制元标记,但也没有成功

  tags.Text += "<meta http-equiv=\"cache-control\" content=\"public\" />";
tags.Text+=”;
响应标头始终为空

缓存控制:没有缓存,必须重新验证 内容编码:deflate 内容类型:text/html;字符集=utf-8 日期:2018年3月2日星期五18:38:03 GMT 过期:-1 pragma:没有缓存 服务器:Microsoft IIS/10.0 现状:200 改变:接受编码 x-aspnet-version:4.0.30319 x-frame-options:SAMEORIGIN x-powered-by:ASP.NET


我能够在global.asax中的PreSendRequestHeaders事件中覆盖它

protected void Application_PreSendRequestHeaders(Object source, EventArgs e)
{        
     //removed some code for brevity
     var headers = Response.Headers;
     headers.Remove("cache-control");
     headers.Remove("pragma");
     headers.Remove("expires");
     headers.Remove("set-cookie");
     headers.Add("cache-control", "public, max-age=" + TimeSpan.FromHours(1).TotalSeconds.ToString());            
}

其中一位MVP为静态站点添加了一篇很棒的文章