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

Php 一次获取所有数据以备将来使用,php,mysql,mobile,Php,Mysql,Mobile,这是一个如何设计一个比普通网站使用更少资源的网站的问题。手机也进行了优化 事情是这样的:我正要展示一个特定的概述,例如5篇文章(来自博客)。然后,如果我点击第一篇文章,我会在一个新窗口中加载这篇文章。但是,我不需要再次连接到数据库并获取带有特定id的特定帖子,我只需要在我之前创建的5篇帖子数组中查找该帖子(用PHP),这是我第一次获取网站时创建的 它会保存数据以供下载吗?因为PHP也可以在服务器端工作,所以我不确定 好的,我再解释一遍: 方法1: 用户连接到我的网站 5篇文章显示并保存到一个数组

这是一个如何设计一个比普通网站使用更少资源的网站的问题。手机也进行了优化

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

它会保存数据以供下载吗?因为PHP也可以在服务器端工作,所以我不确定

好的,我再解释一遍:

方法1:

  • 用户连接到我的网站
  • 5篇文章显示并保存到一个数组(及其所有数据)
  • 用户单击第一篇文章并期望获得有关此文章的更多信息
  • 我的程序在数组中查找帖子并显示它
  • 方法2:

  • 用户连接到我的网站
  • 显示5个帖子
  • 用户单击第一篇文章并期望获得有关此文章的更多信息
  • 我的程序再次连接到MySQL并从服务器获取帖子

  • 你有没有想过把帖子保存在div中,并且只在用户点击某个地方时才让它可见?如何做到这一点。

    你有没有想过将帖子保存在divs中,并且只在用户单击某个地方时才显示出来?如何做到这一点。

    首先,这听起来像是一个过早优化的案例。我不会开始缓存数据库之外的任何东西,直到测量结果证明这是一件明智的事情。缓存将您的注意力从手头的核心任务移开,并引入复杂性

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

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

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

    最后一点:你说

    PHP也可以在服务器端工作


    那不准确。PHP只在服务器端工作。

    首先,这听起来像是过早优化的例子。我不会开始缓存数据库之外的任何东西,直到测量结果证明这是一件明智的事情。缓存将您的注意力从手头的核心任务移开,并引入复杂性

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

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

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

    最后一点:你说

    PHP也可以在服务器端工作


    那不准确。PHP只在服务器端工作。

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

    所以你的代码看起来像

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

    找一些缓存系统,网络上到处都是。您可以使用memcached或自己创建的静态缓存(即在服务器上以txt文件保存帖子)

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

    所以你的代码看起来像

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

    找一些缓存系统,网络上到处都是。您可以使用memcached或您自己创建的静态缓存(即在服务器上以txt文件保存帖子)

    对我来说,这比第二次调用数据库效率稍低,原因如下

    第一个查询应该只提取您想要的字段,如:title、author、date。这篇文章的内容可能是一个繁重的查询,所以我将排除这一点(如果你愿意,你可以拉一个摘要)

    然后,如果用户需要文章的详细信息,我会用索引键列查询内容


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

    对我来说,这比第二次调用数据库效率要低一点,原因如下

    第一个查询应该只提取您想要的字段,如:title、author、date。这篇文章的内容可能是一个繁重的查询,所以我将排除这一点(如果你愿意,你可以拉一个摘要)

    然后,如果用户需要文章的详细信息,我会用索引键列查询内容


    这样,您就不会为5篇可能从未见过的文章提取内容。

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

    你在这里提倡的是回避一个严重的问题。数据库查询应该毫不费力地提供