tôi tạo động đồ họa trong bộ điều khiển của tôi:Symfony - hình ảnh trong phản ứng - tốc độ, tối ưu hóa
nếu không nộp tồn tại (tên tập tin duy nhất) sau đó tạo ra đồ họa và lưu nó
trở RedirectResponse ($ url)
(3. tôi đã thử thêm:
$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;
)
Tôi cần nó để tạo các thanh tác động động cho người dùng [trên đồ họa này một số văn bản sẽ tự động cập nhật nếu một số thay đổi sẽ được thực hiện trên trang web của tôi].
Vì vậy, điều quan trọng đối với tôi là tập lệnh này hoạt động nhanh và không giết máy chủ/bandwitch của tôi. Để đạt được điều đó tôi đã tạo bộ nhớ cache, nơi tất cả các đồ họa được tạo ra được lưu trữ. Nhưng tôi đã có một vấn đề với tốc độ, giải pháp mà tôi đã mô tả ở trên là khá chậm, khi tôi đã thử nghiệm nó trong chrome với công cụ phát triển (F12) sau đó nó cho tôi thấy rằng cả hai giải pháp (2. và 3.) mất khoảng ~ 1s (khi cùng một đồ họa [không có bộ điều khiển, vv chỉ url trực tiếp đến .png] tải 44ms).
Vì vậy, nếu chỉ cho tôi, nó mất khoảng ~ 1s cho mỗi đồ họa sau đó, nếu ví dụ 1000 người dùng sẽ tạo ra cùng một lúc đồ họa này nó có thể làm chậm trang web của tôi tôi nghĩ.
Vui lòng trợ giúp, bạn có biết cách nào để thực hiện điều đó nhanh hơn không?
PS. Chuyển hướng không phải là điều mong muốn nhất đối với tôi, bởi vì tôi muốn để lại url như nó, ví dụ smth/username/userbar/insted của smth/img/userbars/cache/blabla.png. Nhưng nếu nó sẽ nhanh hơn nhiều thì tôi có thể chịu đựng được :).
EDIT: Để rõ ràng: Tôi không tìm giải pháp cho hình ảnh bộ nhớ cache, sự cố của tôi là trả về hình ảnh qua bộ điều khiển (hình ảnh đã tạo, chỉ từ ftp) mất khoảng 1 giây, khi bình thường nếu bạn làm ví dụ
<img src="direct_url_to_png">
phải mất khoảng 44ms.
"là sử dụng HTML/CSS để hiển thị biểu đồ" ý của bạn là gì? Tôi không nhìn thấy nó bởi vì tôi cần đầu tiên để có được một số số liệu thống kê từ cơ sở dữ liệu, vì vậy tôi sẽ prefere để vượt qua nó bằng điều khiển. Tôi nghĩ rằng một vấn đề là trả lại hình ảnh này (sử dụng stream_get_contents hoặc chuyển hướng mất khoảng 800ms). Nhân tiện, có lẽ tôi sai hoàn toàn và giải pháp của tôi không quá tệ? Nếu nó chỉ ảnh hưởng đến tải hình ảnh cho người dùng và nó sẽ không làm chậm máy chủ hơn tôi nghĩ rằng nó có thể được như nó được? Như tôi thấy bạn tập trung vào lưu trữ hình ảnh được tạo ra, nhưng một vấn đề thực sự là trả lại hình ảnh này :). –
Lần này tôi đã viết ở trên đề cập đến việc tải hình ảnh từ bộ nhớ cache. Tải hình ảnh đã tạo từ ftp qua bộ điều khiển mất khoảng 1 giây và tôi muốn cải thiện nó. –
Cảm ơn lời khuyên, tôi đã thử nghiệm nó và nói chung nó không phải là quá xấu. Khi tôi tạo ra đồ họa riêng biệt sau đó nó tải chỉ khoảng 150ms (không quan trọng nếu chuyển hướng hoặc stream_get_contents) vì vậy nó không phải là xấu như vậy tôi nghĩ. Tải nó trực tiếp mất khoảng 32ms, nhưng tôi kiểm tra xem tập tin tồn tại, lấy thông tin từ cơ sở dữ liệu và lấy đồ họa, do đó, nó có vẻ là tốt. –