
Проблема: Я хочу разместить много цифровых фотографий с веб-сайта. Больше, чем у хостера есть места на диске.
Предыстория: у меня есть vps, на котором размещен веб-сайт, машина имеет огромную пропускную способность, но не так много дискового пространства (50 ГБ или около того). У меня также есть сервер на более медленной линии интернета с большим количеством дискового пространства.
Мое решение: я думал, будет ли целесообразно хранить изображения на машине с медленным соединением, монтировать его на веб-хостинг (с помощью чего-то вроде sshfs или чего-то еще), затем создавать символические ссылки для всех изображений и обслуживать эти символические ссылки из apache. Затем создать скрипт, который сканирует журналы apache в поисках наиболее популярного количества файлов X и копирует эти файлы на локальный веб-сервер (и, следовательно, быстрее).
Через некоторое время я понял, что это звучит как идея для поздней ночи, и решил поспать. Сегодня утром это все еще звучит немного подозрительно, но должен быть какой-то модуль кэширования Apache, который работает с кэшированием disk->disk, верно? (все, о которых я знаю, это disk->memory, перемещая важные файлы в 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
Я думаю, что вы ищете своего рода веб-прокси, который решает, что следует хранить в кэше в зависимости от использования.
Так что, возможно mod_proxy
, или mod_cache
(есть даже mod_disk_cache
) можно здесь использовать.
Я думаю, что в целом поиск скрипта «прокси» даст вам больше того, что вы ищете, чем поиск скрипта «кэш».