
問題:我想託管網站上的大量數位照片。超過主機擁有的磁碟空間。
背景:我有一個託管網站的 vps,該機器有大量頻寬,但磁碟空間不大(50GB 左右)。我還有一台位於較慢互聯網線路上的伺服器,具有大量磁碟空間。
我的解決方案:我在想,是否可以將圖像存儲在具有慢速鏈接的計算機上,將其安裝到網絡主機上(使用 sshfs 等),然後為所有圖像創建符號鏈接並提供服務那些來自apache 的符號連結。然後建立一個腳本,掃描 apache 日誌,尋找最受歡迎的 X 個文件,並將這些文件複製到 Web 伺服器本機(因此速度更快)。
過了一會兒,我意識到這聽起來像是一個深夜的想法,所以我決定繼續睡覺。今天早上聽起來還是有點狡猾,但是一定有某種 apache 快取模組可以在磁碟->磁碟快取上工作,對嗎? (我所知道的所有都是磁碟->內存,將重要文件移動到內存,而不是從較慢的廣域網鏈接或較慢的本地磁碟移動到本地磁碟)。
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
我認為您正在尋找的是某種網路代理,它決定應根據使用情況在快取中保留哪些內容。
所以也許可以在這裡利用mod_proxy
或mod_cache
(甚至還有一個) 。mod_disk_cache
我認為一般來說,尋找“代理”腳本會為您帶來比搜尋“快取”腳本更多的東西。