【发布时间】:2011-04-15 08:14:38
【问题描述】:
目前,我们的网站存储 2/3 的固定图像尺寸。这些是在上传时生成的,并通过我们的 CDN 分发。然而,我们需要实施更灵活的解决方案,我们正在开发需要多种不同尺寸的移动和平板电脑应用程序。我们提出的解决方案是创建一个可以接受图像标识符(id/type/url 等)和大小限制的 PHP 脚本。然后脚本可以动态创建图像并将其缓存以供下次使用。
这是一个可行的解决方案吗?
目前,CDN 还保护我们的 Web 服务器免受相当大的负载。一旦图像生成一次,是否有将 CDN 合并到此过程中?我能想到的唯一方法是让脚本返回图像资源的 URL,但随后客户端需要发出 2 个 HTTP 请求。重定向可能会更快,但这对速度来说还是不好的做法吗?
【问题讨论】:
-
我会列出可以生成的有效尺寸;否则,这样的系统很容易受到拒绝服务攻击,这些攻击会在每次大小迭代中快速请求图像。即使对于最大尺寸为 100x100 的单个图像,也有 10,000 次可能的迭代,每个迭代都可以单独请求和生成,而没有适当的限制、消耗时间、内存和磁盘空间。
-
为什么您不向 CDN 询问请求中要求的大小的文件的缓存版本,如果不存在则创建一个新版本,将其存储以备将来使用并将其返回给客户?我的意思是这对我来说是一个可行的解决方案,并且在服务器负载方面是最好的。
-
所以 PHP 脚本服务于 CDN,但如果它不存在,则创建并返回图像(并缓存到 CDN)?
-
是的,这将是您需要的方法。
-
很高兴您喜欢这样回答,以便您获得积分;)
标签: php image-processing imagemagick