
В этой статье поговорим о кешировании страниц и их частей, а также о том, какие плюсы это дает.
Если на Вашем сайте практически нет динамики (например, новостной сайт или блог), то Вы легко можете складывать все его страницы в кеш и практически не делать запросов к бекенду. Но что делать если на сайте есть авторизация, и зависящая от этого логика?
В этой статье речь пойдет о том, как кешировать страницы с персональными данными используя Varnish и язык ESI.
Читать далее…

При оптимизации приложения важно не забывать о том, что оптимизируем мы прежде всего для клиента. Сайт, который работает медленно, это всегда неудобно и плохо.
Главный критерий оптимизации для клиента - это скорость ответа (т.е. время, за которое Web сервер отвечает на запрос). Если не брать во внимание клиентскую оптимизацию, есть ряд практик, позволяющих быстрее генерировать ответ клиенту (по сути без оптимизации внутренностей).
Читать далее…

В этой статье рассмотрим проблемы, которые могут возникать при кеширования тяжелых запросов. Под тяжелыми запросами следует понимать не только медленные, но и ресурсоемкие запросы (например, обращение к внешним XML источникам с последующей обработкой). Наиболее стандартные ситуации - это тяжелые SQL выборки на страницах с агрегационной информацией (популярные видео ролики, лучше фотки, самые активные пользователи и т.п.). На первый взгляд все просто - кешируем на час..два и забываем о этих запросах на долгое время. Какие проблемы могут возникнуть в ходе увеличения нагрузок?
Читать далее…

В этой статье представлена презентация Игоря Сысоева на тему тюнинга ОС FreeBSD 7 под высоконагруженный Web сервер. Он подробно рассказывает о тонкой настройке Web сервера под управлением freebsd. Каждый системный параметр детально описывается и докладчик предлагает рекомендуемые его значения. Must see.
Читать далее…

Как мы выбираем, по каким колонкам в MySQL строить индексы? Иногда не все так очевидно, как кажется. Эффективность того или иного индекса зачастую зависит от распределения данных в таблице. Правильный, на первый взгляд, индекс может работать крайне не эффективно в зависимости от специфики и частоты данных.
Как это можно выяснить? Простой и очень интересный пример взят с блога mysqlPerformanceBlog. Этот способ анализа индексов применим не только к MySQL, а и к другим СУБД.
Читать далее…

Что такое скорость загрузки Web страницы? Это время, за которое пользователь получает полностью загруженную страницу.
От чего зависит это время? От того, насколько долго запрос пользователя обрабатывается на сервере. Но не только.
Сегодня типичная Web страница - это несколько десятков картинок, парочка CSS файлов, до десятка JavaScript файлов и HTML размером в 50…100 Кб. И для загрузки каждого из этих компонент браузер посылает на сервер отдельный запрос.
Ясно, что загрузка одной только странички, сгенерированной на серверной части (на Вашем PHP, Python, ASP и т.п.) займет малую часть времени. Большинство времени и ресурсов отнимет загрузка всех остальных компонент страницы.
Клиентская оптимизация призвана уменьшить время полной загрузки страницы.
Читать далее…

PHP, на сегодняшний день, это одна из самых популярных платформ для создания Web приложений. Нет смысла в очередной раз упоминать о многочисленных монстрах современного интернет, основой которых служит PHP.
PHP - достаточно производительная платформа (если сравнивать с альтернативными решениями, хотя все очень зависит от реализации), к тому же является масштабируемой (опять же, если реализация не хромает). Вопрос производительности и масштабируемости - это конечно дело приложения и его архитектуры, но тем не менее существуют некоторые советы, позволяющие сделать Ваше приложение более эффективным.
В этой статье мы рассмотрим общие практики и советы при построении нагруженных систем на основе PHP.
Читать далее…

Создано на wordle
Эта картинка обычно отражает мысли человека, перед которым стоят два факта:
- Система растет
- Производительность падает
Закапываясь в проблемы производительности и масштабирования, мы зачастую забываем и путаем что и зачем мы делаем. В этой статье мы вернемся к первым вопросам, на которые необходимо отвечать постоянно, что-бы не збиваться с курса.
Читать далее…
Apache - популярный веб-сервер в интернет, он обслуживает множество серверов и сайтов. Часто возникает необходимость увеличить производительность веб-сервера. Наверное лучший способ это сделать - перейти к схеме frontend+backend, но это может потребовать достаточно серьезных изменений в приложении (например, у вас наверняка отвалятся всяческие индикаторы прогресса аплоада файлов :).
Другой способ - просто увеличить производительность сервера - поставить более быстрый процессор и больше памяти.
Однако и первое и второе требует много времени и ресурсов, так что на первое время можно попробовать ускорить apache путем оптимизации его конфигурации. Существуют оптимизации, которые можно применить только при пересборке apache, другие же можно применять без перекомпиляции сервера.
Читать далее…
SELECT * FROM articles ORDER BY id LIMIT 20000, 20
Что приходит Вам на ум, когда Вы видите такой код? Да, это реализация постраничного вывода на уровне SQL. А еще это выбор результатов для отображения 1000-й страницы.
И Вы сталкиваетесь с тем, что этот запрос работает очень быстро для выборки первых страниц, и невероятно медленно для последних. Почему и как это исправить? Рассмотрим пример для MySQL, хотя описанные принципы применимы для любой СУБД.
Читать далее…
Комментарии