2012-12-14 23 views
2

最近我试图将图像存储在Mysql数据库中(使用BLOB数据类型),使用php和web来上传和存储它。它工作正常,除了加载足够大的图像时,它会加载非常缓慢。有什么办法可以更快地加载这个图片吗?如何更快地从Mysql加载图像?

注:我的朋友建议我使用武力缓存到该图像(他说,有关改变图像的内容头),但我不知道该怎么做。我怀疑它会带来更好的表现。

在此先感谢

+0

也许这后约[缓存动态数据](http://stackoverflow.com/questions/10596116/caching-http-responses-when-they-are-dynamically-created-by-php/10596231#10596231)可以帮助你 –

回答

0

我想缓存可以很好或不是。相反的,我建议你上传图片或其他文件到文件夹和数据库保存只是文件中的信息:名称,类型,大小,文件夹,等等...

0

如果你没有任何必要,需要您将图像存储在数据库中,图像在文件夹内更好,您应该在数据库中存储的是路径或每个图像的名称。

这会使它们正常加载。当然,取决于图像的大小。

这就是你会发现什么在几乎所有的Web应用程序。

+1

thx。我知道,但我喜欢简单,当我需要删除,更新或备份数据库。我只是使用SQL查询来做到这一点,而不需要照顾文件夹中的图像。 – DennyHiu

+0

没关系。只需要注意数据库空间。 – Alvaro

2

图像应该被缓存。我认为这可以通过确保您制作的图片url始终与相同图片相同来完成。我认为你的问题是,但你需要改变max_allowed_pa​​cket。如果它太小,它将无法一次性通过网络发送太多数据。另外,如果图片真的很大,我还会考虑将图片质量改为70%?所有调整大小的图像函数都有一种方法来改变它。即:http://php.net/manual/en/function.imagejpeg.php。希望有所帮助。我也会考虑YSlow。它会帮助指出你的图像究竟是什么错误,使它加载缓慢。无论是质量,缓存,压缩还是w/e都可能。

+0

thx回复。我确保图片网址始终指向相同地址的相同图片。仍在重新加载,并且仍然很慢。但是,当谈到你对imagejpeg的PHP函数的建议时,它是岩石!它减少了重新加载时间很多 – DennyHiu

+0

我也想看看yslow插件。它会帮助指出你的图像究竟是什么错误,使它加载缓慢。无论是质量,缓存,压缩还是w/e都可能。 –

+0

我还没有检查出其他因素。我刚刚得到怪异的印象,当我所有的网站的元素成功加载了,我还是得从MySQL装载 – DennyHiu

1

缓存图像时存储在文件系统中的图像都可以使用。如果它们从数据库动态弹出并打印出来,每次PHP代码请求它们时都会被抓取。

这可能是因为图像是在数十毫秒的牵强,但一个3MB的图像数据可以被下载到客户端浏览器进行5秒至1分钟(取决于连接速度)。与它没有太大的关系(在共同的共享主机上甚至更少)。

我建议将图像存储在文件系统中,以便它们可以被浏览器缓存,或者您甚至可以在Apache服务器上设置一个memcache,以便在到期时它们将从缓存中提供。

+2

谁说图片不能被缓存等待的形象,如果他们是从一个数据库来的? :) –

+0

这取决于他们的打印方式......如果他们被内嵌打印像''他们可能不会被缓存一个base64数据...除非FPC缓存被启用? – shadyyx