【问题标题】:Parts of page loading at different times在不同时间加载的部分页面
【发布时间】:2011-06-22 13:39:17
【问题描述】:

我正在从数据库中输出我网站上的数据。它工作正常,除非页面加载时,它将开始在不同的位置显示,并且页面的某些部分将在不同的时间加载,从而使页面跳转直到加载。我希望它像大多数网站(Facebook、Twitter 等)一样同时加载,而不是在不同时间输出部分代码。我正在使用 PHP,但我不知道是什么原因造成的。任何人都知道发生了什么或遇到过同样的问题吗?

【问题讨论】:

  • 你有一些活生生的例子来证明这一点吗?
  • 您是否在使用任何可能使用flush() 函数的框架或库?
  • 在其他所有人中,ob_start 修复了它。
  • 您说的页面的不同位置和部分将在不同时间加载是什么意思? PHP 线性输出页面。你的意思是图片是异步加载的吗?或者您的意思是内容显示到发生数据库查询的位置,然后在查询执行时暂停片刻,然后在查询返回后加载页面的其余部分?

标签: php


【解决方案1】:

你可以试试输出缓冲:

// before any output is generated
ob_start();

// all your code

// end of the script
echo ob_get_clean();

这将捕获所有生成到缓冲区的输出,并在脚本完成时转储它。但是,这意味着在您的查询完成之前不会发送任何内容。也许您应该考虑的另一个考虑因素是尽可能优化您的数据库查询,以减少数据库命中的瓶颈影响。

【讨论】:

  • 原来是这样。谢谢!我会在 8 分钟内接受答案。
  • @Matt,没问题;我刚刚意识到一个错字,你想要ob_get_clean() 而不是ob_end_clean()ob_end_clean() 丢弃缓冲区)。我已经相应地更新了我的答案。另外,如果可能,不要忘记优化您的数据库查询。
【解决方案2】:

在关于您的问题的 cmets 中,您说您使用 ob_start()“修复”了这个问题。缓冲整个页面实际上并不是一个好主意,以便所有内容都立即显示出来,这会损害您感知的加载时间并使您的页面对用户来说似乎更慢。研究表明slow page loads drive people away from your site。以快速加载页面为目标的另一个原因是Google has started using page speed 作为搜索结果排名时的信号。

像谷歌这样的大型快速网站实际上恰恰相反,他们flush the buffer early 并且经常。

一些快速页面似乎“一次全部加载”的原因是因为有效的页面缓存、负载平衡的地理位置服务器、使用 CDN 和其他事情,例如通过 JavaScript 尽早刷新文档和加载后的内容.

查看Yahoo! performance guidelines,了解有关提高页面速度的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-14
    • 2015-05-07
    • 1970-01-01
    • 2012-04-28
    • 2015-11-03
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多