Php 获取缩略图时降低网页的总体下载速度。。。怎样

Php 获取缩略图时降低网页的总体下载速度。。。怎样,php,mysql,thumbnails,Php,Mysql,Thumbnails,我从数据库/远程服务器获取应用程序中的许多缩略图,并将它们加载到列表视图中。 当有大约100个缩略图时,网页的整体下载速度是合理的,但当我获取大约250多个缩略图时,整体下载速度明显较慢 我知道我可以使用分页,但在我的情况下,这不是一个选项 我最终获取的缩略图总数约为500。。。它不会变得更高 我的问题如下: 有没有一种方法可以加快在我的应用程序中获取缩略图的速度?我听说可能会将缩略图缓存在一个文件中,然后调用该文件。。。这是最好的解决办法吗?如果是,有人能在这个问题上指导我吗 有什么提示吗?先

我从数据库/远程服务器获取应用程序中的许多缩略图,并将它们加载到列表视图中。 当有大约100个缩略图时,网页的整体下载速度是合理的,但当我获取大约250多个缩略图时,整体下载速度明显较慢

我知道我可以使用分页,但在我的情况下,这不是一个选项

我最终获取的缩略图总数约为500。。。它不会变得更高

我的问题如下: 有没有一种方法可以加快在我的应用程序中获取缩略图的速度?我听说可能会将缩略图缓存在一个文件中,然后调用该文件。。。这是最好的解决办法吗?如果是,有人能在这个问题上指导我吗

有什么提示吗?先谢谢你

马可

编辑 用我读过的东西怎么样。。。类似于以下方法的内容:

$cache = 'cache/thumbnails.cache.php';

if (!file_exists($cache)) { // check also for the expiration date

   echo "this is a cached copy... <br />";
   include($cache);

} else

   // start the output buffer
   ob_start();

   // INSERT php script to show thumbnails...

    $fh = fopen($cache, 'w+') or die ('Error...');
    fwrite($fh, ob_get_contents());
    fclose($fh);

    // send the output to the browser
    ob_end_flush();

}

这是推荐的方法吗?

在用户向下滚动页面时加载缩略图。 使页面动态化,例如,当用户位于底部时,加载更多4行缩略图


您这样做的方式可能是使用了其他服务器的大量不必要的带宽,因为用户可能不会在页面底部查看最新的缩略图。

一种方法是将所有的拇指(顺便说一句,大小或方向不必相同)收集到一个巨大的img中,然后只下载该图像而不是250图像。然后,为了显示拇指,您可以将巨大的img作为背景图像:,放置在其x轴和y轴上,以便所需的精确缩略图显示为所需的背景图像。然后,每个图像的数据库单元格可能只包含拇指的大小、方向以及巨型图像上目标缩略图的x/y坐标

阅读css背景图片了解更多信息


-皮特

为什么分页不是一种选择?我认为这是最好的选择,因为所有浏览器都可以使用它,而不是动态页面ajax加载

图像是否在不断变化?如果没有,创建一个静态页面

下一个选项是您所说的,缓存图像。但是,这与创建静态页面所需的技能相同

另一个选项是缓存页面。您可以估计页面图像发生更改的频率,并将其用作生存期。php pear的cachelite是一个好的、快速的、易于使用的工具。 使用此功能,您始终可以加载500个图像。
一个改进是为页面提供较长的生命周期,并对数据库中的更改进行页面加载检查。您可以重建缓存或为缓存页面提供服务。

您是将缩略图存储在数据库中还是存储在文件中?您是对每个缩略图执行一个或多个查询,还是一次只执行一个查询以列出所有行?我的图像位于文件夹中。。每个类别只有一个查询,一次列出所有行。url看起来像这样。。。查询:选择。。。从…起其中cat=nyea。。。我也想到了。。。不幸的是,我的拇指大小不尽相同……@Marco:@Pete的答案甚至适用于大小不同的图片。我注意到的一点是,一旦抓取一次缩略图,浏览器在我再次抓取它们时会做得非常好。。。我猜这是因为浏览器使用缓存在我驱动器上的图像…我编辑了上面的问题。。。使用ob_start;的方法如何?这是一个可以使用的方法吗?浏览器正在缓存图像这一事实确实意味着您的页面将始终被缓存。最好是自己实现系统,以减少服务器负载和资源使用。如果建议不要使用obstart进行缓冲。它对加速页面速度没有任何作用,并且有500多个图像,您的应用程序可能会很快耗尽内存!