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