高效地将文件上传到CDN


Efficiently uploading files to a CDN

我使用Rackspace的CDN来托管我网站的所有媒体(图像和视频)。每次用户上传东西时,我都会使用这个过程:

  1. Uploadify将文件上传到PHP方法
  2. PHP方法对文件名进行散列,将文件上传到tmp目录,创建缩略图版本(如果需要),并返回散列后的文件名和缩略图名称
  3. jQuery用于将预览图像src替换为:/location/to/tmp/file_name,并将file_name也存储在隐藏输入中
  4. 提交表单时,隐藏输入的$_POST值用于将文件上传到CDN,并将CDN位置存储在关系MySQL表中

一切都很好,一切都好。

但我最近一直想知道这是否是最有效的方法——因为目前,脚本正在处理文件的方法中间将文件上传到CDN。有时表单会有多达10-12个图像(有些超过1MB),因此在处理功能的中间需要进行大量的数据传输——我担心这会不必要地降低速度。在我的本地主机上和用于暂存的共享主机上都可以,我相信当我们在生产VPS上推出它时不会有问题,但我仍然希望尽可能地做好事情。

我应该把所有CDN上传都留给cronjob吗?还是我现在使用的方法可以?

这很可能取决于Rackspace CDN上实施的限制(如果有),以及您上传的并发用户数量。

如果它们有一个限制,并且您可能在生产环境中接近它,那么为CDN上传实现某种排队服务器会更安全。