目前我们的网站存储2/3个固定图像尺寸。这些是在上传时生成的,并通过我们的CDN分发。但是,我们需要实施更灵活的解决方案,我们正在开发需要多种不同尺寸的移动和平板电脑应用。我们提出的解决方案是创建一个PHP脚本,可以接受图像标识符(id / type / url等)和大小限制。然后,脚本可以动态创建图像并在下次将其缓存。
这是一个可行的解决方案吗?
目前,CDN还使我们的网络服务器免受相当大的负担。一旦图像生成一次,是否有将CDN合并到此过程中?我能想到的唯一方法就是让脚本返回一个指向图像资源的URL,但是客户端需要发出2个HTTP请求。重定向可能会更快,但对于速度来说,这仍然是不好的做法吗?
答案 0 :(得分:2)
这种系统应该是更多的读取然后写入。
为了让您的系统快速运行,您应该尽可能地预处理,以便降低较大部分(读取)的性能影响,即使它会增加较小部分的性能影响(写入)
从这个意义上讲,您应该确定所需的尺寸,并在上传时(即上传后)创建这些已调整大小的图像。
没有多少有效尺寸,大多数智能手机/平板电脑都有,但最终有一些可能的解决方案,预处理将无法比即时缓慢变得更糟 - 整个用户体验的东西。
同样,不要被愚弄,任何时间都是A_LOT_SLOWER,因为你检查了isincache,创建部分然后只返回。
并且EVERY_SINGLE_IMG_REQUEST将包括缓存检查,并且一些将在重要时间(读取)不必要地放慢速度而不是在不重要的时间(iE产生永远不会看到的图像)不必要地吃掉一些cpu周期(上传)
答案 1 :(得分:0)
我们最近做了类似的事情。用户上传文件。对文件的任何版本的任何请求都会通过一个脚本来检查图像是否已生成并生成图像或以其他方式提供图像。那里有一点开销,但到目前为止,我很好。然后脚本将要发送的文件排队到我们的CDN(在我们的案例中为S3),并且一旦发送就更新本地引用,以便下次使用CDN的引用呈现页面。重定向是你绝对想要避免的。
答案 2 :(得分:0)
如果您的服务器安装了Imagik,那么大多数都是标准配置。 Imagik实际上支持它,只需要建立一个功能来做到这一点,抱歉这不是很有帮助,但我过去曾经使用它。