【发布时间】:2026-01-20 20:55:01
【问题描述】:
我在控制器中动态生成图形:
如果文件不存在(唯一文件名)则生成图形并保存
返回重定向响应($url)
(3.我也试过了:
$fp = fopen($url, "rb");
$str = stream_get_contents($fp);
fclose($fp);
$response = new Response($str, 200);
$response->headers->set('Content-Type', 'image/png');
return $response;
)
我需要它为用户动态生成用户栏[如果在我的网站上进行一些更改,则在此图形上,一些文本将自动更新]。
所以对我来说,这个脚本运行速度快并且不会杀死我的服务器/bandwitch 对我来说很重要。为了实现这一点,我制作了存储所有生成图形的缓存。但是我遇到了速度问题,我上面描述的解决方案非常慢,当我使用开发工具(F12)在 chrome 中测试它时,它告诉我两种解决方案(2. 和 3.)都需要大约 1 秒(当相同的图形 [没有控制器等,只是将 url 指向 .png] 加载 44 毫秒)。
因此,如果仅对我而言,每个图形大约需要 1 秒,那么如果例如 1000 个用户将同时生成此图形,我认为它可能会减慢我的网站。
请帮忙,你知道更快的方法吗?
附言。重定向对我来说不是最渴望的事情,因为我更愿意保留 url 原样,例如 smth/username/userbar/ insted 或 smth/img/userbars/cache/blabla.png。但如果它会更快,那么我可以忍受:)。
编辑:要明确:我不是在寻找缓存图像的解决方案,我的问题是通过控制器返回图像(已经生成的图像,仅来自 ftp)大约需要 1 秒,例如,通常情况下
<img src="direct_url_to_png">
大约需要 44 毫秒。
【问题讨论】:
标签: php image optimization symfony1 response