使用大数据集时,Zend视图渲染速度较慢


Zend View Rendering is Slow With Big Dataset

Zend视图通常会立即渲染,但数据集很大;1500个对象放入一个xml视图,这需要2-3秒,这对我的应用程序来说是不可接受的。如有任何建议,我们将不胜感激。

600 KB可以或不能强制应用程序缓慢执行执行时间取决于实际的脚本、它的持久层、从web到数据库服务器的连接等等。因此:

首先,以这样一种方式为应用程序提供工具,即计算服务器端脚本所花费的时间

例如,将index.php重命名为realIndex.php,并创建一个新的index.php,如下所示:

$startTime = microtime(TRUE);
require_once( dirname( __FILE__ ) . '/realIndex.php' );
$endTime = microtime(TRUE);
echo '<hr />Time taken: ' . ( $endTime - $startTime ) . ' micros';

当然,这种方法微不足道,在任何情况下都不起作用。尽管如此,这还是一个起点。

尝试返回少量数据

通常,大量的数据项(无论是否为XML)表达了糟糕的用户体验和技术设计

因此,我建议在服务器端处理尽可能多的数据,并向客户端返回压缩数据集。别忘了:在检索和处理数据时,数据库系统或多或少总是比脚本快。

由于用户无法真正从心理上理解1500个项目的网页中的所有数据,我建议对结果视图的数据进行页面。检索1/10的大数据集,并提供导航控制以转到上一页或下一页。

请注意,这不仅有助于用户,而且还减少了数据量,您的数据库需要扫描和检索-如果数据库定义良好的话。例如,索引要搜索的属性,并尝试将记录保存在固定大小的表中,等等。

三件事:

  1. 忘记分析。你已经确定它很慢,这并不奇怪——1500组数据就是很多数据
  2. 添加分页!确定每页项目的最大数量(限制),然后添加分页控件
  3. 研究memcache之类的缓存解决方案,尤其是在数据更新不频繁的情况下

看起来其中一些项目已经在另一个答案中解决了。这一定意味着我们正在做一些事情:-)