在 CDN 上实现完整的 HTML 页面缓存
Implement full HTML page caching on CDN
我们正尝试在我们的 Kentico 门户引擎网站上使用 CDN 实现整页 html 缓存。为了能够做到这一点,我们需要将文档的 cache-control 而不仅仅是资产设置为 "public"。我已经尝试在我的 global.asax 开始请求事件中添加下面的代码来测试它,但由于某种原因,文档响应 header cache-control 总是设置为 no-cache。 Kentico 是故意设置的吗?我想是的,因为他们有自己的缓存机制built-in,但如果我们想使用 CDN,我们需要将缓存设置为 public。有没有办法覆盖它?
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(new TimeSpan(1, 0, 0));
我也尝试修改 PortalTemplate.aspx.cs 以添加 cache-control 元标记,但它也没有用。
tags.Text += "<meta http-equiv=\"cache-control\" content=\"public\" />";
响应header总是
cache-control:no-cache, must-revalidate
content-encoding:deflate
content-type:text/html; charset=utf-8
date:Fri, 02 Mar 2018 18:38:03 GMT
expires:-1
pragma:no-cache
server:Microsoft-IIS/10.0
status:200
vary:Accept-Encoding
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 为静态网站撰写的精彩文章
https://www.kenticotricks.com/blog/static-sites-with-kentico-cloud
我们正尝试在我们的 Kentico 门户引擎网站上使用 CDN 实现整页 html 缓存。为了能够做到这一点,我们需要将文档的 cache-control 而不仅仅是资产设置为 "public"。我已经尝试在我的 global.asax 开始请求事件中添加下面的代码来测试它,但由于某种原因,文档响应 header cache-control 总是设置为 no-cache。 Kentico 是故意设置的吗?我想是的,因为他们有自己的缓存机制built-in,但如果我们想使用 CDN,我们需要将缓存设置为 public。有没有办法覆盖它?
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(new TimeSpan(1, 0, 0));
我也尝试修改 PortalTemplate.aspx.cs 以添加 cache-control 元标记,但它也没有用。
tags.Text += "<meta http-equiv=\"cache-control\" content=\"public\" />";
响应header总是
cache-control:no-cache, must-revalidate content-encoding:deflate content-type:text/html; charset=utf-8 date:Fri, 02 Mar 2018 18:38:03 GMT expires:-1 pragma:no-cache server:Microsoft-IIS/10.0 status:200 vary:Accept-Encoding 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 为静态网站撰写的精彩文章
https://www.kenticotricks.com/blog/static-sites-with-kentico-cloud