回答
确定它会降低服务器的速度,这也取决于您使用的图像的大小。你为什么不保存缩略图?
如果您在每次页面加载时生成新的缩略图,则需要额外的处理时间。根据您缩略图的图像数量以及原始尺寸,您可能会注意或不会注意到缓慢。如果无论如何,您可以在第一页加载时创建缩略图并保存,并加载预先创建的其他页面加载版本,则会更好。
GD使用大量内存。它将图像完全加载到内存中并对其进行解压缩,因此每像素至少需要32位。与大小800×600的图像做然后用起来:
800 * 600个* 32个比特= 15.4兆比特= 2 MB
这只是加载图像。我听说如果你调整大小,它会使用这个的两倍,如果你的图像更大,它会更多的记忆。
你应该真的考虑缓存你的缩略图,这样它们只需要生成一次(这也会加快访问者的页面速度!)。
我也读过现在您正在从外部服务器加载图像,在这种情况下,您真的必须缓存图像,否则您的访问者必须等待您首先下载整个图像。如果外部服务器关闭或超载,访问者将不得不等待超时(这看起来像是你的服务很慢),这会变得更糟。除此之外,如果每次用户请求缩略图时下载图像,则会浪费大量带宽。
由于GD使用这么多的内存,所以使用IMagick扩展代替生成缩略图可能是值得的。 ImageMagick在内存消耗方面的扩展性更好,而且速度也非常快(但由于上述原因,您仍然应该缓存图像)。
+1 for *“ImageMagick在内存消耗方面做得更好”*,这是您应该以粗体显示的关键信息!你可以删除其余的。 :-) – TMS 2012-04-17 20:54:55
取决于你用它做什么,但为什么不尝试自己:
- memory_get_usage() - 返回的内存分配给PHP
- memory_get_peak_usage()量 - 返回PHP 分配的内存峰值
任何类型的图像处理都可能是内存密集型的。
如果您可以缓存这些图片以避免每次点击页面时重新生成图片,那将是一个很好的举措。
为您处理大量缓存的PHP库是phpThumb--它可能是这类任务的理想选择。
- 1. GD在调整大小时是否需要这么多内存?
- 2. Nhibernate使用大量内存
- 3. 使用PHP GD库来调整大小和保存图像HELL
- 4. PHP脚本GD库内存问题
- 5. 使用大量模块编译NodeMCU是否会影响内存使用?
- 6. Cassandra数据库行大小是否受可用内存限制?
- 7. IntelliJ插件是否占用大量内存?
- 8. SQLite中的数据库迁移期间,内存使用量和/或数据库大小是否会翻倍?
- 9. 使用大量参数调用函数是否消耗更多内存?
- 10. 使用AJAX是否会增加PHP的内存使用量?
- 11. 是否可以使用d8来衡量内存使用情况?
- 12. 使用分配是否减少使用的内存量?
- 13. Visual Studio Profiler使用大量的内存
- 14. Redis Data Structures使用大量内存
- 15. 使用PHP + MySQL缓存大量内容
- 16. 使用大量内存的Xcode仪器。
- 17. 进程使用大量内存
- 18. rsyslog占用大量内存
- 19. 占用大量内存
- 20. cProfile占用大量内存
- 21. PHP GD允许的内存大小用尽
- 22. GD库保存图像
- 23. 使用Hibernate的二级缓存是否可以减少内存使用量或只是数据库访问?
- 24. 运行Eclipse Helios是否正常,Javaw会消耗大量内存?
- 25. Nashorn内存泄漏大量内存被jdk.nashorn.internal.scripts.JO4P0使用
- 26. 是否有人大量使用StreamInsight?
- 27. 使用巨大页面分配的内存是否有限制?
- 28. 大型SQL Server内存使用率是否会导致错误?
- 29. 是否改变内存大小?
- 30. ListView的内容占用大量内存
重新生成缩略图需要服务器时间。要知道它是否“太慢”,唯一的方法就是试试看。另外,“记忆”和“速度”是两个完全不同的概念。 – 2010-01-13 21:05:56