需要很长时间才能加载随机图像

时间:2014-01-17 18:21:07

标签: php performance

我的网站有一个随机图像生成器。问题是,这需要很长时间..我想知道是否有人可以帮助以任何方式加快速度。该网站为http://viralaftermath.com/,这是脚本:

header('Content-type: image/jpeg;');
$images = glob("images/" . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
echo file_get_contents($images[array_rand($images)]);

2 个答案:

答案 0 :(得分:1)

这是一种非常耗费资源的方法,因为您通过PHP传递图像数据而不指定任何缓存标头,因此每次打开页面时都必须重新加载图像。

更好的方法是让glob()列出您用于嵌入图片的HTML页面中的文件然后随机化该列表,并发出{{ 1}}标记指向您随机确定的实际文件名。

当您链接到静态图像而不是PHP脚本时,您也可能受益于Web服务器的静态资源的缓存默认值。 (您也可以使用PHP发送缓存标头,但在这种情况下,随机指向静态图像确实最有意义。)

<img>

答案 1 :(得分:0)

描述您的代码并找到瓶颈。我只能猜测。

echo file_get_contents($file);

这将首先将完整文件读入内存,然后将其发送到输出缓冲区。如果文件直接进入输出缓冲区会更好。 readfile()是你的朋友。完全避免缓冲会更好。 ob_end_flush()会帮助你。

下一个候选者是图像目录。如果搜索一个图像需要很长时间,则必须对其进行优化。这可以通过索引(例如,使用数据库)来实现。