1. 不要用中文, 空格, 特殊字符做文件名
  2. 不要用用户上传的图片文件名做为文件名直接存储,不规范, 并且容易有冲突
  3. 文件名可以采用时间戳或 md5 值
  4. 不要用连续递增的数字做文件 id,避免图片被直接遍历爬走了
  5. 超大型图片存储,可以考虑在图片的保存文件名上暗藏了一些元数据信息,例如图片的大小、时间等等信息,仅仅只需要一个 fileID,能够准确定位文件在什么地方
  6. 避免文件路径的变更.各处本地缓存, 引用 都会失效
  7. 同一个文件夹下的文件个数不宜太多,否则读取文件的速度会变慢。Linux Ext2,测试单目录 3000 文件是个瓶颈
  8. 可以按照 时间 / 用户 等业务逻辑做目录的划分
  9. 也可以用 MD5 做 hash,3 级目录完全可以满足图片日后图片增长需要,也可以避免图片重复存储的问题。用 md5 值来索引查找。例如/ab/cd/ef/abcd....xx.jpg,存储容量可以达到 36^6*1024 个文件
  10. 图片服务器保存原图既可以了,缩略图、水印等可以根据请求用 ImageMagick 生成。这样可以分布到别的服务器,方便迁移等,路径按图片大小区分开,例如:/800x600/ab/cd/ef/abcd....xx.jpg
  11. 推荐使用 ReiserFS 文件系统格式