运行从数据库提供图像的脚本是否可行?

运行从数据库提供图像的脚本是否可行?

我经营着一个非常动态的游戏评论网站。所有图片(截图、游戏缩略图、用户个人资料图片等)都通过服务器上的 PHP 脚本提供。它以 id 作为参数并从数据库读取数据,并使用 image/[png/jpg] 的内容标头输出。在不久的将来(不到一个月),我们将与另一家公司合作。我们预计网站的流量将大幅增加。

我估计我们的流量将增加到每天5万左右。

过去,我曾遇到过来自我们托管服务器的此错误:您已达到每秒运行的脚本/进程的限制。我查了一下,发现我们每秒同时运行的脚本(php、cgi 等)数量限制为 20 个。平均而言,我们网站上的每个页面有 50 张图片。

我的第一个问题是:这个限制合理吗?其他托管解决方案是否也有这种限制?

第二个问题:

建议使用此设置来提供图像吗?我可以尝试获取没有此限制的服务器,但我担心如果我们获得更多流量,此设置是否可以扩展?

我能想到的替代方案是:

  • 将图片以文件形式存储在服务器上。数据库将存储图片的相对路径,而不是图片 ID。这样,至少每张图片不会成为服务器需要运行的动态脚本。
  • 运行多个仅提供图像服务的图像数据库服务器。那么负载平衡将如何工作?

任何帮助,将不胜感激。

答案1

我认为,在扩展图像服务方面,最重要的是在前端进行缓存。它可以是 Varnish 或一些 CDN 服务。如果缓存良好,后端对于小型项目来说并不那么重要。它可以是一个相当好的数据库。虽然与静态文件相比,它有一些开销,但它可以提供一些基本的可扩展性解决方案,如复制到多个数据库和可管理性。

最重要的是尽早将其构建到应用程序中,当任何图像发生变化时,其 URL 也会随之改变。然后您将能够无限期地缓存所有内容 :)

相关内容