问题:我想托管网站上的大量数码照片。托管的磁盘空间超过了存储量。
背景:我有一台托管网站的 vps,该机器拥有大量带宽,但磁盘空间不多(50gb 左右)。我还有一台位于较慢的互联网线路上的服务器,但磁盘空间很多。
我的解决方案:我在想,是否可以将图像存储在具有慢速链接的机器上,将其安装到 Web 主机上(使用类似 sshfs 之类的东西),然后为所有图像创建符号链接并从 apache 提供这些符号链接。然后创建一个脚本,扫描 apache 日志以查找最受欢迎的 X 个文件,并将这些文件复制到 Web 服务器本地(因此速度更快)。
过了一会儿,我意识到这听起来像是一个深夜想法,于是决定睡一觉再考虑。今天早上听起来还是有点可疑,但肯定有某种 Apache 缓存模块可以处理磁盘->磁盘缓存,对吧?(我所知道的都是磁盘->内存,将重要文件移动到 RAM,而不是从较慢的 WAN 链接或较慢的本地磁盘移动到本地磁盘)。
TL;DR:这实际上是一个愚蠢的想法吗?
答案1
如果您可以将速度较慢的链接机器暴露给互联网,那么您也可以在该机器上运行网络服务器。
这意味着您消除了 sshfs 的开销。
您可以使用 apache mod_rewrite 模块和 mod_proxy 来强制任何图像请求转到您的服务器:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /(.*)\.(jpg|gif|png) http://slow.server.com/$1.$2 [P]
RewriteCond 规则规定,只有当请求的文件在服务器上不存在时才进行重写。然后,RewriteRule 规定,如果请求的是图像,则从慢速服务器获取它。
然后,您只需要单独跟踪热门图片并将它们上传到服务器。如果存在,它们就会被使用。
答案2
我认为您正在寻找的是某种 Web 代理,它根据使用情况来决定应在缓存中保留什么内容。
因此也许mod_proxy
或mod_cache
(甚至有一个mod_disk_cache
)可以在这里得到利用。
我认为一般来说,寻找“代理”脚本会比搜索“缓存”脚本给您带来更多您想要的内容。