我已经开启"全页缓存"到"开 - 在所有情况下" "缓存&速度设置"并通过清除缓存并在单独的浏览器中加载我的主页来测试它。但无论我刷新浏览器多少次,似乎加载时间似乎都保持不变,这让我相信CMS仍然会通过DB来检索页面而不是缓存。
我设法在/concrete/src/Cache/Page/PageCache.php
中专门跟踪这些代码/**
* Note: can't use the User object directly because it might query the database.
* Also can't use the Session wrapper because it starts session which triggers
* before package autoloaders and so certain access entities stored in session
* will break.
*/
public function shouldCheckCache(Request $req) {
$session = \Config::get('concrete.session.name');
$r = \Cookie::get($session);
if ($r) {
return false;
}
return true;
}
如果我强制此函数始终返回true,我会发现浏览器的后续重新加载会看到更短的加载时间,我相信这表明页面是从缓存中检索的。
该功能似乎检查" CONCRETE5"已设置cookie。如果是,则缓存将被忽略。我真的不明白这一切意味着什么,所以希望有人可以帮助我解释一下我做错了什么,或者我应该做些什么。
感谢您的帮助!
答案 0 :(得分:1)
这存在的最初原因是如果用户已登录则完全禁用缓存,可能今天有更好的方法可以做到这一点,因此我们可以从github上的讨论中受益。
你所看到的特殊情况是一个边缘情况,其中所有这些都是真的
这通常不会发生在真实网站用户身上,因为从缓存中呈现网站会阻止会话启动。真正对此进行测试的方法是在已经构建缓存后打开一个新的隐身标签,然后浏览您的网站。据我所知,如果缓存失效并且任何一个页面加载而不是缓存,则每个后续请求都会围绕缓存。
Nicolai是正确的,因为我们可以从使这一点变得更聪明和更健壮中受益,在github上打开一个新的讨论问题可能是一件好事。
编辑:我为讨论打开了this github issue