最近我试图将图像存储在Mysql数据库中(使用BLOB数据类型),使用php和web来上传和存储它。它工作正常,除了加载足够大的图像时,它会加载非常缓慢。有什么办法可以更快地加载这个图片吗?如何更快地从Mysql加载图像?
注:我的朋友建议我使用武力缓存到该图像(他说,有关改变图像的内容头),但我不知道该怎么做。我怀疑它会带来更好的表现。
在此先感谢
最近我试图将图像存储在Mysql数据库中(使用BLOB数据类型),使用php和web来上传和存储它。它工作正常,除了加载足够大的图像时,它会加载非常缓慢。有什么办法可以更快地加载这个图片吗?如何更快地从Mysql加载图像?
注:我的朋友建议我使用武力缓存到该图像(他说,有关改变图像的内容头),但我不知道该怎么做。我怀疑它会带来更好的表现。
在此先感谢
我想缓存可以很好或不是。相反的,我建议你上传图片或其他文件到文件夹和数据库保存只是文件中的信息:名称,类型,大小,文件夹,等等...
图像应该被缓存。我认为这可以通过确保您制作的图片url始终与相同图片相同来完成。我认为你的问题是,但你需要改变max_allowed_packet。如果它太小,它将无法一次性通过网络发送太多数据。另外,如果图片真的很大,我还会考虑将图片质量改为70%?所有调整大小的图像函数都有一种方法来改变它。即:http://php.net/manual/en/function.imagejpeg.php。希望有所帮助。我也会考虑YSlow。它会帮助指出你的图像究竟是什么错误,使它加载缓慢。无论是质量,缓存,压缩还是w/e都可能。
缓存图像时存储在文件系统中的图像都可以使用。如果它们从数据库动态弹出并打印出来,每次PHP代码请求它们时都会被抓取。
这可能是因为图像是在数十毫秒的牵强,但一个3MB的图像数据可以被下载到客户端浏览器进行5秒至1分钟(取决于连接速度)。与它没有太大的关系(在共同的共享主机上甚至更少)。
我建议将图像存储在文件系统中,以便它们可以被浏览器缓存,或者您甚至可以在Apache服务器上设置一个memcache,以便在到期时它们将从缓存中提供。
谁说图片不能被缓存等待的形象,如果他们是从一个数据库来的? :) –
这取决于他们的打印方式......如果他们被内嵌打印像''他们可能不会被缓存一个base64数据...除非FPC缓存被启用? – shadyyx
也许这后约[缓存动态数据](http://stackoverflow.com/questions/10596116/caching-http-responses-when-they-are-dynamically-created-by-php/10596231#10596231)可以帮助你 –