Подтвердить что ты не робот

Оптимизация сайта PHP

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

Я искал в Google много статей о скорости и оптимизации, и вот что я нашел:

  • Кэш страницы
  • Сохраните его на диске

Кэширование страницы в памяти:

Это очень быстро, но если мне нужно изменить содержимое моей страницы, я должен удалить его из кеша, а затем снова сохранить файл на диске.

Сохранить на диске

Это очень просто поддерживать, но каждый раз, когда страница доступна, я должен читать на диске.

С каким методом следует идти?

4b9b3361

Ответ 1

Ян и idm правы, но вот как:

Кэширование (страницы или содержимое) является критичным для производительности. Минимальные требования, которые вы запрашиваете в базе данных или в файловой системе, лучше, если ваш контент является статическим или динамическим.

Вы можете использовать ускоритель PHP, если вам нужно запустить динамический контент:

Моя рекомендация - использовать Альтернативный кэш PHP (APC)

Вот пример:

Какой лучший ускоритель PHP использовать?

Ускорители PHP: APC против Zend vs XCache с Zend Framework

Lighttpd - Тесты ускорения PHP

Для кэширования контента и даже страниц, которые вы можете использовать: Memcached или Redis.

Memcached: Бесплатная и открытая, высокопроизводительная система кэширования объектов с распределенной памятью, общая по своей природе, но предназначенная для ускорения динамических веб-приложений за счет облегчения загрузки базы данных. Memcached - это хранилище ключей в памяти для небольших фрагментов произвольных данных (строк, объектов) из результатов вызовов базы данных, вызовов API или рендеринга страниц.

Redis Redis является открытым исходным кодом, расширенным хранилищем ключей. Он часто упоминается как сервер структуры данных, поскольку ключи могут содержать строки, хэши, списки, наборы и отсортированные наборы.

Оба являются очень хорошим инструментом для кэширования содержимого или переменных.

Вот несколько эталонных тестов, и вы можете выбрать, какой из них вы предпочитаете:

Redis vs Memcached

Redis vs Memcached

Redis VS Memcached (немного лучше)

В Redis, Memcached, Speed, Benchmarks и The Toilet

Вы также можете установить Varnish, nginx или G-Ван

Varnish: Лак - это ускоритель HTTP, предназначенный для контент-тяжелых динамических веб-сайтов. В отличие от других ускорителей HTTP, таких как Squid, которые начали работать как клиентский кеш, или Apache, который в основном является исходным сервером, Varnish был разработан с нуля в качестве ускорителя HTTP.

Nginx nginx (произносится "engine-x?" ) - это легкий, высокопроизводительный прокси-сервер с веб-сервером/обратным прокси-сервером и электронной почтой (IMAP/POP3), лицензированный под лицензией BSD. Он работает в Unix, Linux, BSD вариантах, Mac OS X, Solaris и Microsoft Windows.

г-Ван G-WAN - это веб-сервер с скриптами ANSI C и хранилищем Key-Value, который превосходит все другие решения.

Вот несколько эталонных тестов, и вы можете выбрать, какой из них вы предпочитаете:

Обслуживание статических файлов: сравнение Apache, Nginx, Varnish и G-WAN

Тесты производительности веб-сервера

Nginx + Varnish по сравнению с Nginx

Apache, Varnish, nginx и lighttpd

G-WAN vs Nginx

Ответ 2

У вас есть хорошая идея, которая близка к тому, что я делаю сам. Если у меня есть статическая страница, статичная, я сохраню ее версию html и передаю ее пользователю, а не генерирую содержимое снова каждый раз. В некоторых случаях это сохраняет как mysql-запросы, так и несколько операций io. Каждый раз, когда я делаю некоторые изменения, мой интерфейс администрирования просто удаляет html файл и воссоздает его.

Этот метод оказался на 100% быстрее на моем сервере.

Ответ 3

Большой вопрос с эффективностью веб-сайта: "Вы обслуживаете статические страницы или используете ли вы динамические страницы?".

Статические страницы

Лучший способ ускорить статические страницы - это кэшировать их вне вашего сайта. Если вы можете себе это позволить, послужайте их с CDN (Akamai, Cotendo, Level3). В этом случае трафик никогда не попадает на ваш сайт. Существует несколько способов управления кешем - от фиксированной продолжительности до стандартных директив кеширования HTTP.

Даже если вы не можете подавать свой HTML-код с CDN, сохранение ваших изображений, javascript и других статических ресурсов на CDN может ускорить ваш сайт - для этого вы можете использовать облачную службу, такую ​​как Amazon.

Если вы не можете позволить себе CDN для своего HTML, вы можете использовать свой собственный уровень прокси-сервера, как это предлагает книга Зевса. У меня были хорошие результаты с лаком. В идеале вы запустите свой кеширующий прокси на своем собственном оборудовании, но вы можете запустить его на существующих серверах.

Динамические страницы

Динамические страницы сложнее кэшировать, поэтому вам нужно сосредоточиться на том, чтобы сделать страницы максимально эффективными. Это в основном означает охоту на узкое место - в большинстве систем узким местом является база данных (но далеко не всегда).

Если вы уверены, что ваше узкое место является базой данных, существует несколько способов кеширования - вы можете кэшировать "фрагменты" HTML или вы можете кэшировать запросы к базе данных. Использование ускорителя помогает в этом - я бы не изобрел его с нуля. Это, вероятно, означает повторное архивирование (части) вашего приложения.

Ответ 4

Сначала вы должны профанировать свой сайт.

Вместо дикой догадки нужно определить определенные узкие места (-ы), а затем решить эту определенную проблему.

Cahing не является серебряной пулей или синонимом оптимизации.
Иногда кеширование неприменимо (например, для объявлений), иногда это ничего не поможет, так как причина медленности сайта может быть в некотором неродственном месте.
На вашем сайте может не хватать памяти. Таким образом, кэширование памяти ухудшит ситуацию.

Я не могу поверить, что у кого-то есть сайт с высоким трафиком, и сказал, что это слово из предыдущего профилирования. Как вы можете запустить его, не зная об этом внутренних? Загрузка процессора, загрузка памяти, диск ввода/вывода и т.д.

Ответ 5

Я могу добавить:

  • Кэш всего, что вы можете

  • Свернуть число включает

  • Используйте ускоритель

Пожалуйста, исследуйте, что делает ваш сайт медленным. Не забывайте о YSlow и подобных вещах, они могут вам очень помочь.

Кроме того, если у вас есть большие вычисления, вы можете написать расширение php для них, но я не думаю, что это ваш случай.