2015-01-31 3 views
1

У меня есть сайт LAMP вверх и вниз. Он работает довольно быстро, но хотел бы улучшить скорость. Я признаю, что у вас нет конкретного PHP-скрипта, SQL-запросов, включено ли кэширование, настройка сервера и т. Д., А также не задавать вопросы на этом уровне. Вместо этого я спрашиваю, существует ли общий подход к передовой практике и порядок шагов по выявлению узких мест, чтобы скорость веб-сайта могла быть улучшена.В целом, как оптимизировать производительность многоуровневого приложения

+0

На такие вопросы, как это, на самом деле нет общих ответов. Это всего лишь вопрос взглянуть на всю диагностику и заметить ценности, которые кажутся чрезмерными. – Barmar

+0

@Barmar Любые мысли о том, с чего вы начнете сначала? – user1032531

+2

Шаг 1: профиль выполнения. Сколько времени отклика тратится в браузере пользователя, проходит через сеть, анализирует запрос, получает необходимые данные, обрабатывает, собирает ответ, обходит сеть обратно и отображает результаты в браузере пользователя? Применяйте рекурсивно к критическим шагам - здесь используются конкретные методы. Но сначала профиль. – mpez0

ответ

1

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

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

У меня постоянно есть эти линии, обернутые вокруг основного тела моего кода;

<?php 

$start_time = microtime(true); // Note the start time. 
$html = get_html();    // Main body of code. 

// Calculate peak memory usage and time taken. 
$mem = number_format(memory_get_peak_usage(true)/1024/1024, 1).'mb'; 
$tmr = number_format(microtime(true) - $start_time, 2).'s'; 

echo "{$html}\n<!-- Peak memory usage: {$mem}. Response time: {$tmr} -->"; 

?> 

Это покажет, сколько времени get_html() берет. Если вы сравните это с временем ожидания, сообщенным браузером, вы можете узнать, сколько из общего времени ответа потребляется вашим кодом и сколько потребляется другими вещами, кроме вашего кода.

Надеюсь, что это поможет.

+0

Спасибо Nigel. Выполнение этого только измеряет PHP и связанные с ним MySQL, но не сетевые/apache/множественные запросы и т. Д. – user1032531

+0

Действительно, если вы знаете, сколько времени занимает ваш собственный код, и вы знаете общее время, которое,/apache - разница между этими двумя. Я не знаю, как напрямую измерить время сети/apache. Кстати, я не думаю, что ваш вопрос слишком широк, как это предлагают модераторы. Чуть «мета» вопросы хороши. –

+0

Спасибо Найджелу, я бы подумал, что кто-то написал бы книгу по этому вопросу. – user1032531

Смежные вопросы