缓存页头显示用户详细信息的页面


Caching a page where the header shows user details

我们有一个使用CodeIgniter的网站,正在使用全页缓存技术:https://www.codeigniter.com/user_guide/general/caching.html

我们遇到的问题是在网站的主标题(导航)上,我们要么有(登录/注册)按钮,要么如果用户已经登录,我们会显示用户的照片和他/她的名字,并在下拉菜单中编辑配置文件和注销。

缓存现在缓存由激活它的用户生成的信息,因此即使您登录或未登录,它也会显示。

如何实现缓存页面,但根据会话显示一些区域?

我明白"ajax"是实现它的一种方式,但还有其他方式吗?有更正确的方法吗?

您需要一个更细粒度的缓存系统,它可以缓存整个模板和/或内容块,无论它们是什么形式。这是框架的任务,不能通过web服务器缓存来实现,因为web服务器/代理级别的缓存只能缓存整个页面,并且通常由mime类型决定。一旦你有了动态内容,缓存的网站就必须没有任何依赖于用户的内容。

正如您已经提到的,最佳解决方案是ajax。如果用户是访客,则可以直接交付缓存页面,因为这些页面不依赖于用户标识。一旦用户登录,我建议完全禁用缓存(您可以使用apache2环境变量,例如,可以根据存在的logincookie设置),或者您提供一个静态的,缓存的"骨架"页面,并在页面重新加载后重新加载用户内容。

或者你根本不刷新第一个页面请求,并像facebook一样重新加载所有用户内容。