Я думаю твой тест может претендовать на звание «самый объективный тест в рунете», тут даже нету смысла говорить о чистоте эксперимента — результат очевиден. Ура!
nginx парсит SSI-инструкции, ему неважно какой кусок html вы упаковали в блок. В статье есть ссылка на исходный код linux.ria.ua/SsiBlocks/. Если в коде не разберетесь пишите.
В любом деле нужно действовать без фанатизма. Я с Вами согласен, что в таком случае все переводить на блоки нельзя.
Вобще-то можно, частично, неужели все блоки должны быть актуальны? Посто каркас страницы кешировать уже не получится, а вот ленту новостей, курсы валют, блок с счетчиками/информерами,… можно поробовать.
В статье рассказывается все о том как у себя воспроизвести предложенную мной схему. Я старался максимально понизить порог вхождения в тему, спецы и так все давно знают и этим успешно пользуюются.
А если видите что-то лишнее для себя, переходите с следующему подзаголовку.
Возможно вы не привыкли к стилю конфтгов nginx, в данном конкретном случае в кеш не попадает «по умолчанию» ничего, т.к. время кеширования равно 0.
По какому принципу ложить в кеш указано в директиве fastcgi_cache_key $uri$is_args$args; Т.е., например, сранички /menu.php и /menu.php?key=value будут размещены в разных кеш-файлах.
Кроме того в кеше не происходит подмены ssi-инструкций. Если в index.php есть "", то в кеше эта инструкция так и остается. Подмена происходит в менент запроса и если menu.php нету сейчас в кеше то происходит обращение к бекенду и размещение в кеш только menu.php, где время размещения в кеше определяется по заголовку «Cache-control».
Объяснил как умел, если неумело, то настройте локальную копию и убедитесь в этом сами.
А очистка кеша нужна для того что указана инструкция fastcgi_cache_use_stale, если ваш бекенд сгенерит ошибку то она не будет показана, абудет взята устаревшая копия с кеша. Ну если устаревшей копии в кеше нет, только тогда можно увидеть сбой.
Но если запрашивается сраничка index.php, menu.php,… то в кеше создается отдельная страничка
Я с Вами согласен. В данном случае каждый блок кешируется именно по отдельности, сборка блоков в готовую страницу происходит при каждом запросе к серверу. Просто алгоритм сборки настолько заоптимизирован, что этот процес отъедает очень малую долю процессорного времени.
Если вы экспортировали из Actionscript метод setRingtone(), при этом id подгруженного flash-объекта 'MyFlashID', то обратиться к нему можно приблизительно так
Я решил провести тесты. Для того чтоб эксперимент можно было считать более-менее чистым отключил iptables, запросы производил с localhost, чтоб исключить влияние пропускного канала, sendfile был включен, тестировал на fs: ext3(у меня небыло возможности подмонтировать диск с noatime), tmpfs
Результат для запроса одиночного файла небольших размеров — разницы практически нет.
ab -n 10000 -c 1000 localhost:8080/vrt/1.jpg
Document Path: /vrt/1.jpg
Document Length: 238482 bytes
Time taken for tests: 6.466 seconds
ab -n 10000 -c 1000 localhost:8080/hdd/1.jpg
Document Path: /hdd/1.jpg
Document Length: 238482 bytes
Time taken for tests: 6.701 seconds
Вобще-то можно, частично, неужели все блоки должны быть актуальны? Посто каркас страницы кешировать уже не получится, а вот ленту новостей, курсы валют, блок с счетчиками/информерами,… можно поробовать.
А если видите что-то лишнее для себя, переходите с следующему подзаголовку.
В первой статье производительность будет падать за счет того что для работы с Memcached потребуется сетевые операции.
во второй статье мы получим скорее всего сравнимую производительность nginx-кешом.
По какому принципу ложить в кеш указано в директиве fastcgi_cache_key $uri$is_args$args; Т.е., например, сранички /menu.php и /menu.php?key=value будут размещены в разных кеш-файлах.
Кроме того в кеше не происходит подмены ssi-инструкций. Если в index.php есть "", то в кеше эта инструкция так и остается. Подмена происходит в менент запроса и если menu.php нету сейчас в кеше то происходит обращение к бекенду и размещение в кеш только menu.php, где время размещения в кеше определяется по заголовку «Cache-control».
Объяснил как умел, если неумело, то настройте локальную копию и убедитесь в этом сами.
А очистка кеша нужна для того что указана инструкция fastcgi_cache_use_stale, если ваш бекенд сгенерит ошибку то она не будет показана, абудет взята устаревшая копия с кеша. Ну если устаревшей копии в кеше нет, только тогда можно увидеть сбой.
Но если запрашивается сраничка index.php, menu.php,… то в кеше создается отдельная страничка
Там речь идет о FreeBSD.
> Это забивание гвоздей микроскопом, тратить время своё и читателей на такую ерунду.
Вы за читетлей не расписывайтесь, некрасиво как-то.
Клавиатуру нашел в Google.
, если там нужно передавать параметры то так
Результат для запроса одиночного файла небольших размеров — разницы практически нет.
ab -n 10000 -c 1000 localhost:8080/vrt/1.jpg
Document Path: /vrt/1.jpg
Document Length: 238482 bytes
Time taken for tests: 6.466 seconds
ab -n 10000 -c 1000 localhost:8080/hdd/1.jpg
Document Path: /hdd/1.jpg
Document Length: 238482 bytes
Time taken for tests: 6.701 seconds
Вы были правы — вношу правки в статью.