【问题标题】:How is a cache system effective in the php lifecycle?缓存系统如何在 php 生命周期中有效?
【发布时间】:2023-04-10 22:15:01
【问题描述】:

我有点困惑。

我知道对于每个 PHP 请求,整个应用程序都会重新启动。

鉴于此,如果为每个请求重新加载所有全局变量,缓存如何有效?

例如:

用户调用 URI/user/view/123。用户 123 从数据库加载并存储在 $user 中。

为什么要缓存 $user 的内容 - 当您只需要引用变量来获取内容时?

我没有抓住重点吗?

谢谢,

【问题讨论】:

    标签: php model-view-controller caching


    【解决方案1】:

    它更像是缓存图像,常见的数据库查询

    例如,假设您的网站有很多文章,每篇文章都有类别。并且说您不经常更改类别,那么使用类别表查询的缓存结果比进行查询更可取。这是一个简化的例子。

    另一个例子是图像,如果您的网站需要他们上传的用户照片的缩略图版本,而不是让 php 使用 GD 库重新缩放图像等,只需保存该缩略图版本的版本并使用它来代替再次运行 GD 代码。

    【讨论】:

    【解决方案2】:

    和往常一样,一张图片值一千字,这里是:)

    (source)

    如您所见,您重新加载了一些 PHP 库(如基本环境(全局、请求、Cookie 等),但不是所有内容(在本例中为安全性、应用程序、各种库、视图)。

    您跳过可以缓存的内容;)

    【讨论】:

    • 虽然我认为安全部分应该在进入缓存之前:P
    • 该图仅指全页缓存 - 这不是最常见的,或者在大多数情况下是最合适的。
    • 我知道,但这是一个例子。有多种缓存方法(见鬼,甚至说这太宽泛了)。您可以缓存整个页面(如我给出的示例),最多只缓存 sql 查询(例如,更直接地在数据库中)。
    • @PatrickEvans 我同意你的观点,但我相信这取决于你显示的页面(例如,如果它在会员区,这个例子就不起作用)
    • 如果为每个 PHP 请求重新加载内存缓存(由全局句柄引用),您将如何有效地缓存完全静态的页面?您必须加载页面以对其进行缓存,并且每次请求都会重置缓存(除非使用 memcached,我不打算在很长一段时间内使用它)。
    猜你喜欢
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2020-06-14
    相关资源
    最近更新 更多