LINUX.ORG.RU
ФорумAdmin

Nginx + кеширование + много статики без бэкенда.

 , ,


0

3

Доброго времени суток!

Подскажите, есть ли решения для кеширования статического контента (по выбору, или по указанию каталога) в Nginx без backend-a.

Все мы знаем, что Nginx неплохо работает как проксирующий фронтенд-сервер, где мы можем прописать правила кеширования для различного типа файлов.

В нашей же ситуа, есть несколько каталогов с очень большим количеством маленьких файлов (до 5 Мб). Нужна софтина, если не умеет Nginx, которой бы мы показали пальцем - тут Nginx, ты работаешь с ним. Тут - каталоги с файлами, ты забираешь файлы в ОЗУ и работает с Nginx.

Несколько дней искал решение - Nginx-у нужен бэкенд, memcached как я понял работает с php кодом.

Какие будут варианты?

Спасибо!

Зачем кешировать статику? Просто дискового кэша мало? Или обязательно нужна избирательность?
Можно извратиться, настроить нужную директорию как отдельный server или location в nginx, и проксировать запросы на него (nginx будет сам себе бекендом). Ну или самому написать на openresty какое хош кеширование, если хочется странного какого-то нетривиального поведения.

MrClon ★★★★★
()

Автор ищет странное. В норме это делается ядром ОС, а не «софтиной».

Bers666 ★★★★★
()

Поддержку предыдущих ораторов. :) Мне кажется, вы как-то неправильно решаете задачу. Или задача изначально имеет неверную идею.

Если у вас очень-очень-очень много-много-много мелких файлов, то достаточно раскидать их по директориям (для extN <1000 на директорию) или выбрать файловую систему, которой всё равно.

Всё остальное сделает ОС.

Ну, ещё сверху можно добавить браузерный кэш. Чтобы сам клиент дёргал меньше.

lexazloy
()

Сделать можно, пишешь правила expires тогда-то для директории, указываешь proxy_cache_path, proxy_cache и как-бы все. Вот только не лучше ли просто директорию на быстрый накопитель/подходящую фс перенести сразу и только выставить expires для браузеров?

anonymous_sama ★★★★★
()

есть несколько каталогов с очень большим количеством маленьких файлов

Звучит как хваленый юзкейс reiserfs

ты забираешь файлы в ОЗУ

Может тогда поднять tmpfs и тупо копировать туда файлы?

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

ты забираешь файлы в ОЗУ

Может тогда поднять tmpfs и тупо копировать туда файлы?

А может просто доверить ОС работу с дисковым кэшом?

snaf ★★★★★
()
Ответ на: комментарий от snaf

А может просто доверить ОС работу с дисковым кэшом?

может. но если ТС так хочет сам указывать что запихать в ОЗУ, то можно и tmpfs. а вообще серьезно - вроде как раз на подобном юзкейсе рейзерфс рвала всех конкурентов как тузик грелку

upcFrost ★★★★★
()

можно попробовать использовать nginx на другом порте в качестве бекенд и использовать proxy, как писали выше

zudwa
()
Ответ на: комментарий от upcFrost

да, я рассматривал tmpfs, но ценность данных крайне важна, а доступность оборудования мне пока не известна.

Всем огромное спасибо за варианты, буду думать. Как примем окончательное решение - отпишусь.

dev-ice
() автор топика
Ответ на: комментарий от snaf

А может просто доверить ОС работу с дисковым кэшом?

а линуксовый кэш умеет кэшировать только те файлы к которым было n+ обращений? ну чтобы не забивать его большими редкоиспользуемыми файлами.

prizident ★★★★★
()
Ответ на: комментарий от upcFrost

Давным давно в далекой галактике... У мну на ext2, тупой html сайт (правда файликов там было не много) емнип полгода проработал с мертвым хардом (обнаружилось когда клиент изменения внести попытался). Железка самосбор а-ля десктоп, крутилось под апачем.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.