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



我们正在尝试在Kentico门户引擎站点上使用CDN实现整页HTML缓存。为了能够做到这一点,我们需要将文档的缓存控制设置为"公共",而不仅仅是资产。我尝试在我的global.asax begin请求事件中添加下面的代码来测试它,但由于某种原因,文档响应标头缓存控件始终设置为无缓存。肯蒂科是故意设置的吗?我认为是的,因为它们内置了自己的缓存机制,但是如果我们想使用 CDN,我们需要将缓存设置为公共。有没有办法覆盖它?

Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(new TimeSpan(1, 0, 0));

我还尝试修改门户模板.aspx.cs以添加缓存控制元标记,但它也不起作用。

tags.Text += "<meta http-equiv="cache-control" content="public" />";

响应标头始终为响应标头

缓存

控制:无缓存,必须重新验证 内容编码:放气 内容类型:文本/html;字符集=UTF-8 日期:2018年3月2日星期五 18:38:03 GMT 过期:-1 杂注:无缓存 服务器:Microsoft-IIS/10.0 状态:200 变化:接受编码 x-aspnet 版本: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 之一为静态站点添加的精彩文章

https://www.kenticotricks.com/blog/static-sites-with-kentico-cloud

最新更新