Оптимизация скорости PHP - PullRequest
3 голосов
/ 17 июня 2010

Меня интересует оптимизация скорости в PHP.

У меня есть ряд файлов, которые запрашиваются при каждой загрузке страницы.В среднем 20 файлов.Каждый файл должен быть прочитан разобранным, если они изменились.И это исключая стандартные файлы, необходимые для веб-страницы (HTML, CSS, изображения и т. Д.).

EG -> страница клиентских запросов -> сервер выводит html, css, images -> сервер выводит динамический контент (20 +/- файлов объединены и сведены к минимуму).

Каков наилучший способ максимально быстрого обслуживания этих файлов?

Ответы [ 4 ]

4 голосов
/ 17 июня 2010

Прежде чем задуматься об оптимизации скорости, стоит задуматься о profiling, который состоит из двух частей:

  • Решите, нужна ли нам когда-либо оптимизация скорости.
  • Если так - определитеопределенная часть нашего приложения, которая становится «узким местом» и требует оптимизации, в отличие от любых других частей .

Последняя может быть на удивление далеко, далеко от той, о которой вы мечталио.

1 голос
/ 17 июня 2010

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

У меня есть ряд файлов, которые запрашиваются при каждой загрузке страницы.В среднем 20 файлов.

Это все php-скрипты?На все ли они ссылается HTML-страница?

Каждый файл должен быть прочитан разобранным, если они изменились

Вы имеете в виду, что они должны быть прочитаны и проанализированы на сервере??Зачем?Прочтите этот пост , чтобы узнать, как идентифицировать и предоставлять новые версии кэшируемого статического контента.

Рассматривали ли вы кэширование на стороне сервера?Это не так сложно:

<?php

    $cached=md5($_SERVER['REQUEST_URI']);
    $lastmod=time() - @mtime($cache_dir . $cached)
    if ((file_exists($cache_dir . $cached)) && (60 < $lastmod)) {
       print file_get_contents($cache_dir . $cached);
       exit;
    } else {
       ob_start();
   ... do slow expensive stuff
       $output=ob_get_contents();
       print $output;
       file_put_contents($output, $cache_dir . $cached);
    }
?>

Обратите внимание, что кэширование на стороне сервера не так эффективно, как кэширование на стороне клиента.

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

Для дальнейшего решения вашей проблемы нам нужно знать намного больше о вашем приложении.

C.

0 голосов
/ 17 июня 2010

Существует несколько способов сохранить кэш кода операции для файлов PHP, которые автоматически проверяют наличие изменений файла. APC - один из них, который мне очень нравится.

0 голосов
/ 17 июня 2010

Если вы говорите о файлах PHP, используйте eAccelerator. Если вы говорите о других файлах, проверьте время файла, чтобы узнать, изменились ли они, и нужно ли вам снова их анализировать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...