Cloudflare是否可以缓存匿名用户但未登录用户的HTML?

Cloudflare是否可以缓存匿名用户但未登录用户的HTML?,cloudflare,Cloudflare,我们有一个网站,匿名用户的内容通常是静态的(每小时更新一次),登录用户的内容对每个用户都不同,经常更新 如果两个用户的URL相同,是否可以配置cloudflare,以便为匿名用户缓存HTML,而不为登录用户缓存HTML 我们是否可以设置相关的缓存头?我一直在努力解决相同的问题,但据我所知,没有办法, 在cloudflare中,您可以设置页面规则,但这些规则只能查看URL本身 因此,我看到的唯一解决方案是为每种类型的用户提供不同的URL(一些额外的参数或子域),然后您可以轻松设置规则以手动强制缓存

我们有一个网站,匿名用户的内容通常是静态的(每小时更新一次),登录用户的内容对每个用户都不同,经常更新

如果两个用户的URL相同,是否可以配置cloudflare,以便为匿名用户缓存HTML,而不为登录用户缓存HTML


我们是否可以设置相关的缓存头?

我一直在努力解决相同的问题,但据我所知,没有办法, 在cloudflare中,您可以设置页面规则,但这些规则只能查看URL本身


因此,我看到的唯一解决方案是为每种类型的用户提供不同的URL(一些额外的参数或子域),然后您可以轻松设置规则以手动强制缓存过期时间

我不确定这是否可行,但我认为这样做的唯一可能性是通过HTTP/HTTPS,因为您可以在CloudFlare页面规则中使用它


因此,如果您将WordPress FORCE_SSL_ADMIN常量设置为true,然后将所有登录的用户URL请求重定向到页面的HTTPS架构,这可能会起到作用,从而可以绕过CloudFlare缓存?

除非您处于企业计划级别,否则这是不可能的

来自

将专用缓存控件添加到页眉:

//recommended by cloudflare for logged in users
if ( is_user_logged_in() ) {
header(‘Cache-Control: private, max-age=3600’);
}
对。它将尊重不请求缓存的元标记,因此只需将这些标记添加到登录用户页面的标题部分即可

示例(使用smarty)

{if$loggedin}
{/if}
(使用PHP)

if($loggedin)
{
回声“;
}

这件事进展如何?有更好的解决方案吗?这不会阻止登录用户获得网站的缓存“注销”版本。这不会阻止登录用户获得网站的缓存“注销”版本。@LudwikTrammer,我在所有网站上都使用了Cloudflare,登录时还没有收到注销页面。我有50多个网站。那么这些网页可能根本就没有缓存?你打开“缓存所有内容”规则了吗?您的解决方案防止Cloudflare缓存登录用户看到的页面,而不阻止缓存注销用户看到的页面。我想我们同意这一部分。那么,当用户的客户端请求Cloudflare缓存中的页面时会发生什么情况(无论用户是否登录,Cloudflare对此一无所知)?他们将直接从缓存中获取版本。在您的情况下,这是已注销的版本。在这种情况下,您的服务器根本不会被击中。我使用的是标准缓存模式。我的缓存很好,但为任何登录的人提供实时页面。CloudFlare就是这样工作的。当请求不缓存时,它尊重头代码。当您发出请求时,首先获取报头。头部由脚本生成,如果您登录(并使用上面的代码),CloudFlare将看到它需要为您获取一个新页面。如果标头中没有缓存指令,则它将为缓存的页面提供服务,并且不会在标头指示不缓存的位置缓存页面,因此它将获取最后一个可缓存页面。您错了。CloudFlare不会针对其缓存的请求命中服务器。它直接从缓存中为他们服务。默认情况下,Cloudflare仅缓存静态文件。既然您打开了“缓存所有内容”规则,那么您的页面就不会被缓存——只有图像、CSS、JS和其他静态内容。
{if $loggedin}
<meta http-equiv="cache-control" content="no-cache" />
{/if}
if($loggedin)
  {
  echo "<meta http-equiv=\"cache-control\" content=\"no-cache\" />";
  }