LINUX.ORG.RU

История изменений

Исправление Spoofing, (текущая версия) :

Nginx может только целиком кэшировать всю страницу. А что если юзер , скажем, залогинен и нужно показывать его имя?

эм, нет. я тут ругаю SSI, благодаря ей можно легко закэшировать отдельные блоки, как это сделал я в своём ЖЖ.

http://i.imgur.com/lrFGRMc.png

поясню скриншот.

в шапке сайта, на каждой странице, находится блок с авторизацией пользователя, ещё в этом блоке есть IP-адрес посетителя.

то есть, нам надо кэшировать: страницу целиком + авторизацию + IP-адрес, — выходит жирновато на одного анонимуса который зашёл на сайт один раз и вышел, а для него аж целая страница сгенерилась! ага...

поэтому каждая страница состоит из трёх частей: основной контент, который для всех общий, + блок авторизации, + строка с IP-адресом.

справа в vim, сверху вниз, можно увидеть SSI: из шапки дёргается <!--# include virtual="/session_id.php" -->, в нём дёргается <!--# include virtual="/remote_addr.php" --> (последний на самом деле можно было заменить на echo var=«REMOTE_ADDR», который SSI, но для чистоты эксперимента я осознанно предпочёл «костыль» в виде php ради одной строки IP-адреса).

слева открыт конфиг nginx, там каждый блок указан вручную, который кэшируется: /index.php основной контент сайта, блок авторизации /session_id.php, и IP-адрес /remote_addr.php, — каждый в отдельности кэшируется, и складывается в /dev/shm, теперь посмотрите на консоль вверху справа, там выхлоп find: итого мы имеем три файла, — контент - просто контент, авторизация с ключём $cookie_sessionid, ip с ключём $remote_addr (смотрите левее fastcgi_cache_key на каждый файл). все эти блоки складываются при помощи SSI в одну страницу и отдаются пользователю. содержимое блоков и ключ видно из выхлопа cat.

ну и внизу бенчмарк производительности ЖЖ.

без кэширования, на чистом php, раздел /blog/ выдавал 300 rps. но теперь, на закэшированной статике при помощи ssi nginx обрабатывает от 1600 rps — 2200 rps! прикиньте, было 300, стало 2000 в среднем. при этом абсолютно ничего не изменилось, динамика продолжает работать, когда надо!

тестируется на 150мбит'ном Wi-Fi между двумя ноутбуками: скорость доходит до 50мбит, но всё упирается в процессор сервера.

хочу 4-х ядерный ноутбук. =)

Исходная версия Spoofing, :

Nginx может только целиком кэшировать всю страницу. А что если юзер , скажем, залогинен и нужно показывать его имя?

эм, нет. я тут ругаю SSI, благодаря ей можно легко закэшировать отдельные блоки, как это сделал я в своём ЖЖ.

http://i.imgur.com/lrFGRMc.png

поясню скриншот.

в шапке сайта, на каждой странице, находится блок с авторизацией пользователя, ещё в этом блоке есть IP-адрес посетителя.

то есть, нам надо кэшировать: страницу целиком + авторизацию + IP-адрес, — выходит жирновато на одного анонимуса который зашёл на сайт один раз и вышел, а для него аж целая страница сгенерилась! ага...

поэтому каждая страница состоит из трёх частей: основной контент, который всех общий, + блок авторизации, + строка с IP-адресом.

справа в vim, сверху вниз, можно увидеть SSI: из шапки дёргается <!--# include virtual="/session_id.php" -->, в нём дёргается <!--# include virtual="/remote_addr.php" --> (последний на самом деле можно было заменить на echo var=«REMOTE_ADDR», который SSI, но для чистоты эксперимента я осознанно предпочёл «костыль» в виде php ради одной строки IP-адреса).

слева открыт конфиг nginx, там каждый блок указан вручную, который кэшируется: /index.php основной контент сайта, блок авторизации /session_id.php, и IP-адрес /remote_addr.php, — каждый в отдельности кэшируется, и складывается в /dev/shm, теперь посмотрите на консоль вверху справа, там выхлоп find: итого мы имеем три файла, — контент, авторизация, ip. все эти блоки складываются при помощи SSI в одну страницу и отдаются пользователю. содержимое блоков и ключ видно из выхлопа cat.

ну и внизу бенчмарк производительности ЖЖ.

без кэширования, на чистом php, раздел /blog/ выдавал 300 rps. но теперь, на закэшированной статике при помощи ssi nginx обрабатывает от 1600 rps — 2200 rps! прикиньте, было 300, стало 2000 в среднем. при этом абсолютно ничего не изменилось, динамика продолжает работать, когда надо!

тестируется на 150мбит'ном Wi-Fi между двумя ноутбуками: скорость доходит до 50мбит, но всё упирается в процессор сервера.

хочу 4-х ядерный ноутбук. =)