好吧,这是一个关于如何设计一个比普通网站使用更少资源的网站的问题。也针对移动设备进行了优化。
这里是这样的:我正要显示一个特定的概述,例如5 个帖子(例如来自博客)。然后,如果我点击第一篇文章,我会在新窗口中加载这篇文章。但是,我没有再次连接到数据库并获取具有特定 ID 的特定帖子,而是在我之前创建的 5 个帖子数组中查找该帖子(用 PHP),当我获取网站时第一次。
它会保存数据以供下载吗?因为 PHP 也可以在服务器端工作,所以这就是我不确定的原因。
好的,我再解释一下:
方法一:
- 用户连接到我的网站
- 5 个帖子显示并保存到一个数组(及其所有数据)
- 用户点击第一个帖子并期望获得有关此帖子的更多信息。
- 我的程序在我的数组中查找帖子并显示它。
方法二:
- 用户连接到我的网站
- 显示 5 个帖子
- 用户点击第一个帖子并期望获得有关此帖子的更多信息。
- 我的程序再次连接到 MySQL 并从服务器获取帖子。
最佳答案
首先,这听起来像是一个过早优化的案例。在测量证明这是明智之举之前,我不会开始缓存数据库之外的任何内容。缓存会将您的注意力从手头的核心任务上移开,并引入复杂性。
如果您确实想将数据库结果保存在内存中,仅使用在 PHP 处理的 HTTP 请求中分配的数组是不够的。处理页面后,在该范围内分配的内存将不再可用。
您当然可以将结果放在 SESSION 范围内。在 SESSION 中保存一些 DB 结果的好处是可以避免 DB 往返。缺点包括增加解决方案编程的复杂性,使用 Web 服务器中的内存存储可能永远无法访问的数据,以及增加数据库中的初始负载以检索用户可能会或可能不会每次请求的额外页面。
如果数据库性能在测量后确实导致您无法达到性能目标,您可以使用经过充分验证的缓存系统,例如 memcached将经常访问的数据保存在网络服务器(或专用缓存服务器)的内存中。
最后说明:你说
PHP works server-side as well
这不准确。 PHP 仅在服务器端工作。
关于php - 一次获取所有数据以供将来使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14568496/