我正在使用一个外部 Web 服务,该服务将返回一个图像 URL,我将在我的网站中显示该 URL,例如:
$url = get_from_web_service();
echo '<img url="'.$url.'" />';
一切正常,除非我有 100 张图像要显示,然后调用 Web 服务变得耗时和资源消耗。
//the problem
foreach($items as $item) {
$url = get_from_web_service($item);
echo '<img url="'.$url.'" />';
}
所以现在我正在考虑两种选择:
//Option1: Using php get_file_contents():
foreach($items as $item)
{
echo '<img url="url_to_my_website/get_image.php?id='.$item->id.'" />'
}
get_image.php :
$url = get_from_web_service($id);
header("Content-Type: image/png");
echo file_get_contents($url);
//Option2: Using ajax:
echo '<img scr="dummy_image_or_website_logo" data-id="123" />';
//ajax call to the web service to get the id=123 and get the url then add the src attribute to that image.
想法
- 第一个选项似乎更直接,但我的服务器可能会超载并参与每个图像请求。
- 第二个选项都是由浏览器和网络服务完成的,所以我的服务器根本不参与。但是对于每张图片,我要进行 2 次调用 1 次 ajax 调用来获取图像 URL,再调用 1 次来获取图像。因此加载时间可能会有所不同,并且 ajax 调用可能会因大量调用而失败。
信息
- 该页面将显示大约 50 张图像。
- 在给定时间,大约有 100 个用户将使用此服务。
- 我无法控制 Web 服务,因此我无法更改其功能,并且每次调用不接受超过 1 个图像 ID。
我的问题
- 我应该考虑任何更好的选择吗?
- 如果没有,我应该遵循哪个选项?最重要的是为什么我应该遵循那个?
谢谢