Php 数据库驱动的站点在初始页面加载时变得缓慢

Php 数据库驱动的站点在初始页面加载时变得缓慢,php,mysql,Php,Mysql,我开发了一个数据库驱动的网站,实际上也是一个内容管理系统。它主要是我自己使用的,但它也是一个uni项目 我不太确定它是在什么时候发生的,但现在它的初始加载时间似乎非常缓慢。现在加载至少需要6秒钟,有时会慢一些。一旦它最初被加载,它几乎是瞬间重新加载或加载任何其他页面。如果您离开它,然后在一段时间后返回(不确定具体多长时间…可能是一分钟或两分钟),则需要6秒或更长时间才能再次加载任何页面 我使用了webpagetest.org,结果显示到第一个字节的时间非常长(有时长达10秒)。我可以在其他时间处

我开发了一个数据库驱动的网站,实际上也是一个内容管理系统。它主要是我自己使用的,但它也是一个uni项目

我不太确定它是在什么时候发生的,但现在它的初始加载时间似乎非常缓慢。现在加载至少需要6秒钟,有时会慢一些。一旦它最初被加载,它几乎是瞬间重新加载或加载任何其他页面。如果您离开它,然后在一段时间后返回(不确定具体多长时间…可能是一分钟或两分钟),则需要6秒或更长时间才能再次加载任何页面

我使用了webpagetest.org,结果显示到第一个字节的时间非常长(有时长达10秒)。我可以在其他时间处理图像大小等其他问题,但需要解决的是初始页面加载问题。如果这与php包含文件有关,那么为什么页面会在初始加载后立即加载

我知道我应该调查它,当它第一次似乎放缓,但不幸的是,我只是不能准确地指出确切的时间。我在谷歌上搜索过加载速度慢的问题,但我找不到任何人对真正的加载速度慢问题给出任何真正的建议。这些都只是一些基本的东西,比如“确保你没有太多单独的CSS文档”或者“不要使用大图像”。除了这些都是常识之外,它们也很不重要

我将抛出一些想法,看看是否有人可以确认网站本身的一般设计缺陷

我曾经在使用数据库的每个include文件中单独连接到数据库,但后来认为这似乎是不必要的,所以现在我只在所有页面的开头连接到数据库(我也在每个主页的末尾关闭)。我应该在所有包含文件上连接到数据库,还是这不合逻辑

所有页面都以与数据库的连接开始,头部中的链接从数据库中检索。诚然,有不止一个CSS文件,但我看不出这会给初始页面加载增加太多时间


包括主页在内的所有文章内容都是直接从数据库加载的。

这肯定与某个地方发生的缓存有关。然而,根据你提供的信息,不可能确定到底是什么花了这么长时间。 您是否使用任何PHP框架或库?你的设置是什么


这就是说,6秒对于一个未缓存的页面仍然是一个巨大的时间量,所以会有一些低效的代码或数据库设计。但你不能指望这里有一颗银弹。为了能够判断性能,需要查看整个代码,问题可能是许多错误选择的组合…

如果您的网站上有社交按钮(fb/twitter/g+等),它们可能会显著降低网站的速度

对我来说,这听起来像是缓存问题。关于您提供的信息,它不应该是浏览器端。我还觉得您没有使用任何php操作码缓存。我想到的另外两个可能的原因是,外部资源或mysql连接和查询速度慢。在我看来,最后一个可能性最大。

你通过CSS、图像等推送多少MB?根据webgetest.org.check和Xdebug profiling,这是26个请求和855 KB。那么这永远不会是问题。我读了一些关于浏览器实现HTML5的一些功能,如“块缓存”(我现在就叫它):例如,如果你查看facebook,你会转到另一个页面并加载一个新页面,除了右边的聊天列表,这可以解释为什么它第二次加载得更快。我要做的是在脚本中的关键点之前和之后,将日期和时间、行号、页面等写入文件,以便您可以确定发生了什么以及发生了什么。对于下面讨论“缓存问题”的所有人,我认为“缓存”在这里做得非常好,将加载速度降低9000%以上,通常在页面完全加载后才能加载。我同意你所说的,AmazingDreams,而且我在网站的任何地方都没有社交按钮。这是一个初始加载问题,你在网站加载中看到的那些社交按钮往往会减慢页面加载的“完成”。我的网页只是等待了很长时间(好像它正在激活服务器脚本),然后整个页面在一瞬间加载。也许我不应该发布这个,但我希望如果可能的话获得一些煽动。我在想,可能存在一些严重的缺陷,比如不必要的代码循环之类的。如果可以对初始负载进行某种解释,那么这将帮助我准确地计算出它可能是什么。您提到了数据库连接,我认为这是主要原因。关于缓存,页面上没有足够的内容来解决这个问题。我指责数据库速度的问题是,我和godaddy有一个付费托管计划。我也有一个免费的托管帐户,它使用的是数据库内容,在初始加载时要快得多。在你的情况下,我会先看看chrome或类似浏览器上的资源加载时间。如果你能确定什么是挂在那里,这将使事情更容易为你。这是解决多年前,但它是最初的数据库连接。将其移动到另一台服务器,并在一微秒内加载。