我的网站有一个随机图像生成器。问题是,这需要很长时间..我想知道是否有人可以帮助以任何方式加快速度。该网站为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)]);
答案 0 :(得分:1)
这是一种非常耗费资源的方法,因为您通过PHP传递图像数据而不指定任何缓存标头,因此每次打开页面时都必须重新加载图像。
更好的方法是让glob()
列出您用于嵌入图片的HTML页面中的文件。然后随机化该列表,并发出{{ 1}}标记指向您随机确定的实际文件名。
当您链接到静态图像而不是PHP脚本时,您也可能受益于Web服务器的静态资源的缓存默认值。 (您也可以使用PHP发送缓存标头,但在这种情况下,随机指向静态图像确实最有意义。)
<img>
答案 1 :(得分:0)
描述您的代码并找到瓶颈。我只能猜测。
echo file_get_contents($file);
这将首先将完整文件读入内存,然后将其发送到输出缓冲区。如果文件直接进入输出缓冲区会更好。 readfile()
是你的朋友。完全避免缓冲会更好。 ob_end_flush()
会帮助你。
下一个候选者是图像目录。如果搜索一个图像需要很长时间,则必须对其进行优化。这可以通过索引(例如,使用数据库)来实现。