获取所有数据以备将来使用

时间:2013-01-28 18:19:06

标签: php mysql mobile

这是一个如何设计一个比普通网站使用更少资源的网站的问题。移动优化也是如此。

这就是:我即将展示一个特定概述,例如: 5个帖子(来自例如博客)。然后,如果我在第一篇文章中点击例如,我会在新窗口中加载此帖子。但是,不是再次连接到数据库并获取具有特定ID的特定帖子,我只是在我的5个帖子的数组中查找该帖子(在PHP中),这是我之前创建的,当我获取网站时第一次。

它会保存下载数据吗?因为PHP也在服务器端工作,所以这就是我不确定的原因。

好的,我会再解释一下:

方法1:

  1. 用户连接到我的网站
  2. 5个帖子显示&保存到数组(包含其所有数据)
  3. 用户点击了第一篇帖子,并期待有关此帖子的更多信息。
  4. 我的程序在我的数组中查找帖子并显示它。
  5. 方法2:

    1. 用户连接到我的网站
    2. 显示5个帖子
    3. 用户点击了第一篇帖子,并期待有关此帖子的更多信息。
    4. 我的程序再次连接MySQL并从服务器获取帖子。

5 个答案:

答案 0 :(得分:2)

首先,这听起来像是过早优化的情况。在测量证明这是明智之举之前,我不会开始在数据库之外缓存任何内容。缓存将您的注意力从手头的核心任务上移开,并引入复杂性。

如果您确实希望将DB结果保留在内存中,那么仅使用在PHP处理的HTTP请求中分配的数组是不够的。处理完页面后,在该范围内分配的内存将不再可用。

您当然可以将结果放在SESSION范围内。在SESSION中保存一些DB结果的优点是可以避免数据库往返。缺点包括增加编程解决方案的复杂性,在Web服务器中使用可能永远不会访问的数据的内存,以及增加DB中的初始负载以检索用户可能会或可能不会每次请求的额外页面。 / p>

如果测量后的数据库性能确实导致您错过了性能目标,则可以使用经过充分验证的缓存系统(如memcached)将频繁访问的数据保存在Web服务器(或专用缓存服务器)中存储器中。

最后说明:你说

  

PHP也适用于服务器端

这不准确。 PHP仅适用于服务器端

答案 1 :(得分:1)

您是否考虑过保存div中的帖子,并且只有在用户点击某处时才能显示? Here如何做到这一点。

答案 2 :(得分:1)

在代码和数据库之间放置某种缓存。

所以你的代码看起来像

if(isPostInCache()) {
    loadPostFromCache();
} else {
    loadPostFromDatabase();
}

去一些缓存系统,网络充满了它们。您可以使用自己可以创建的memcached或静态缓存(即在服务器上的txt文件中保存帖子)

答案 3 :(得分:1)

对我而言,这比第二次调用数据库效率低一点,这就是原因。

第一个查询应该只是拉出你想要的字段:标题,作者,日期。帖子的内容可能是一个沉重的查询,所以我将其排除(如果您愿意,可以提取预告片。)

然后,如果用户想要帖子的详细信息,我将使用索引键列查询内容。

这样你就不会为5个可能从未见过的帖子提取内容。

答案 4 :(得分:1)

如果您的PHP代码不断重新连接到数据库,那么您配置错误并且没有正确使用连接池。如果你已经正确调整了堆栈,查询的执行时间最多应该是几毫秒。除非绝对必须,否则不要缓存。

你在这里提倡的是一个严重的问题。如果正确配置了数据库,则数据库查询应该毫不费力。解决这个问题,你不需要沿着缓存道路前进。

将数据从一个请求保存到另一个请求是一个破坏的设计,如果没有完成完美可能会导致令人尴尬的数据流失情况,其中一个用户正在看到另一个用户的内容。这就是为什么缓存是在所有其他途径都已用尽之后通常会采用的选项。