与缓存一起使用的PHP会话的替代方法是什么?

问题描述 投票:0回答:1

我正在使用PHP会话来存储一些寿命很短的变量,并且每次关闭浏览器时也会被删除。但是,如果我提供页面的缓存版本,则该页面不起作用,该页面基本上是静态HTML页面。

是否有其他替代方法可以以相同的方式工作并且通常与缓存兼容?

PS:我一般来说是在谈论WordPress网站和缓存(基本上适用于那里的每个主要缓存解决方案)

php caching session-variables
1个回答
0
投票

Cookiescaching是在wordpress中进行会话的最佳选择。当涉及到[[cookies时,基本上有两种类型的cookie1.Session Cookies2.永久性cookie。

现在的问题是

WordPress核心如何使用Cookie?

当我们提到WordPress核心时,我们仅指组成开放源代码项目的文件,然后再安装任何第三方插件或主题。我们喜欢称它为自然状态的WordPress。现在,您已经了解了Cookie的基本知识和不同类型,下面让我们看一下WordPress核心为何以及如何使用它们使所有魔术在幕后发生。有趣的事实:Cookie最初源自术语“魔术Cookie”。

WordPress核心将cookie用于两个不同的目的:

1。登录Cookies

登录cookie包含身份验证详细信息,并在用户登录WordPress管理仪表盘时使用。根据WordPress Codex,设置了两个不同的会话Cookie:[登录时,WordPress使用wordpress_[hash] Cookie存储身份验证详细信息(限于/ wp-admin /区域)。登录后,WordPress设置wordpress_logged_in_[hash] cookie。这表明您何时登录以及您是谁。当您尝试访问WordPress网站的后端时,将进行检查以查看上述两个cookie是否存在并且尚未过期。这就是让您神奇地绕过wp-login.php屏幕的原因。 😉

WordPress还设置了wp-settings-{time}-[UID] cookie。该ID是WordPress用户数据库表中的用户ID。这将存储个人仪表板和管理界面设置。

2。评论Cookie

默认情况下,当有人在博客帖子上发表评论时(有效期为347天)设置了cookie。这样一来,如果他们以后再回来,则不必再次填写所有信息。存储了以下三个cookie:comment_author_[hash] comment_author_email_[hash] comment_author_url_[hash]
但是,由于GDPR导致最近的隐私政策发生了变化,WordPress核心引入了新工具,以确保您允许用户选择加入这些cookie。如果尚未设置此设置,则可以在WordPress管理控制台中的“设置→讨论”下启用。选择“显示评论Cookie启用复选框”选项。流行的Akismet插件还允许您显示隐私声明。

Cookies和WordPress缓存当涉及到WordPress缓存时,这就是棘手的地方。缓存实质上是存储一个请求中的资源并将这些资源重新用于后续请求的过程。基本上,它减少了生成页面视图所需的工作量。尽管这对性能很有帮助,但在Cookie方面却引起了问题。

为什么?因为在那里可以使用Cookie来执行某些操作,例如在WooCommerce网站上浏览时保持购物车填充。但是,如果从缓存中提供页面,PHP和数据库都不会执行任何操作,则服务器只会提供页面的静态副本。

那你该怎么办?

    使用JavaScript第一种选择是使用JavaScript并动态更新页面上的内容。基本上,您具有HTML占位符,并使用JavaScript通过API或Ajax调用提取信息。
  • 一个示例是通过使用JavaScript来获取wp-api上的帖子列表,然后在侧栏中呈现它们,从而在WordPress侧栏中加载帖子列表。在这种情况下,您可以更新帖子列表,而无需从缓存中清除页面,因为数据是动态生成的。

    虽然这不是理想的选择,但从性能方面来说,缓存总是更好的选择。但是,如果您必须让部分内容保持动态,而页面本身可以保持静态(从缓存中提供),则这是做到这一点的一种方法–使用JavaScript通过API / ajax动态提取页面那部分的内容呼叫。但是,除非您可以雇用WordPress开发人员来构建自定义JavaScript解决方案或插件扩展,否则该选项通常不切实际。

      使用Admin-Ajax呼叫Admin-ajax.php无法被缓存,因此您可以使用admin-ajax调用。一个很好的例子是No Cache AJAX Widgets插件。它可以进行admin-ajax调用,因此不必担心与服务器级或第三方缓存解决方案冲突。
  • 但是,就像使用JavaScript一样,走这条路通常对普通用户不可行。它还可能导致其他性能问题,例如较高的admin-ajax使用率和大量未缓存的请求。

      [从缓存中排除页面(当存在Cookie时)免费试用除非您可以采用JavaScript或admin-ajax路由,否则最好的方法是在存在特定Cookie时将页面从缓存中排除。这通常是我们的建议,尤其是那些运行高度动态站点(例如WooCommerce和Easy Digital Downloads)的站点。在Kinsta,某些WooCommerce和Easy Digital Downloads页面(例如购物车,我的帐户和结帐)会自动从缓存中排除。有一个服务器级规则,以便在检测到woocommerce_items_in_cart cookie或edd_items_in_cart cookie时,用户自动绕过缓存,以确保顺利且同步的结帐过程。
  • 我们还侦听关联的登录cookie,并在检测到有人登录WordPress时将缓存设置为绕过。防止后端仪表板被意外缓存。

    默认情况下,我们不会从缓存中排除wp_woocommerce_session_ cookie。根据我们的经验,大多数WooCommerce网站都没有任何问题。通过增加缓存的命中率,同时使用更少的PHP工人,这也提高了性能。

    但是,由于有许多不同的WordPress主题和插件配置,我们可以根据需要从缓存中排除wp_woocommerce_session_ cookie。只需联系我们的支持团队即可。结果是,一旦用户将产品添加到购物车中,便不会再从缓存中满足所有后续请求,从而增加了PHP worker的使用率。

    如果您需要从缓存中排除的自定义页面,请随时与我们的支持团队联系以获取帮助。同样,在排除时,您必须小心。太多未缓存的页面实际上可能会降低性能。查看我们关于托管WordPress会员网站的注意事项。

  • © www.soinside.com 2019 - 2024. All rights reserved.