ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Оптимизация загрузки страниц
  #1  
Старый 02.02.2008, 02:44
Аватар для PandoraBox
PandoraBox
Постоянный
Регистрация: 06.05.2007
Сообщений: 393
Провел на форуме:
1510937

Репутация: 398
Отправить сообщение для PandoraBox с помощью ICQ
По умолчанию Оптимизация загрузки страниц

В этой статье будет рассказано об ускорении работы сайта (и web-инфосистемы в целом). Огромную систему сайта можно разбить на участки исполняемого кода и оптимизировать каждый участок по-отдельности, наблюдая за затраченным временем.
  • Хороший фундамент платформы
    • Проверяйте что творится с памятью - большие объектные движки любят загружать память объектами, которые не используются оптимально в показе страницы. В помощь
      Код:
      print_r($GLOBALS);
    • Оптимизация кода дело программиста, а для ускорения компиляции можно использовать ionCube PHPA, eAccelerator, Zend encoder , Turckl mmcache.
  • Оптимизация работы с БД
    • Уменьшение числа запросов. Сложные структуры (типа меню) выгодней хранить в сессии, загружая переменные только один раз из БД, это ускоряет загрузку сайта в разы.
    • На php имеет смысл перейти на использование функций mysqli, вместо mysql и использовать подготовленные запросы
    • Обязательное индексирование ключей и выборка только необходимых данных (вместо SELECT * FROM..)
    • Оптимизация запросов благодаря их исследованию, устанавливая
      EXPLAIN в начале. Всё гениальное просто.
      Изучайте дополнительные возможности, уменьшающие конструкции, например INSERT .. ON DUPLICATE UPDATE; REPLACE;
    • Использование кэширования в MySql, если его ещё нет
      Код:
      SHOW VARIABLES LIKE '%query_cache%';
    • Для очень популярных сайтов имеет смысл пересмотреть кэширование mysql на другом уровне и использовать memcached. Кластеры вам в помощь.
  • Кэширование темплейтов. Темплейты Smarty проходят два процесса - компиляция и кэширование. При компиляции созданный темплейт превращается в php файл. При кэшировании вся страница с данными сохраняется в файл отдельно.
    • Как правило для разных сайтов используется всё же один общий template,что-бы его кэшировать в разных версиях, надо использовать дополнительный ID
  • Правильная оптимизация http-выхода. Читаем Browser Cache usage. Для тестирования используем firebug или pingdom tools
    • Javascript, css лучше складывать в один или пару больших файлов, чем в десяток мелких, даже для изображений если вы используете множество иконок, имеет смысл поместить их в один файл и используя css background-position вырезать из большого файла нужную иконку.
    • Увеличение параллельности загрузки объектов за счёт использования нескольких доменных имён. Так images.amazon.com хороший пример. В Opera впрочем такого ограничения нет, в отличие от IE с 2мя потоками на домен.
    • gzip-сжатие страниц сомнительно что поможет, потому что на распаковку всё же время тоже тратится, а если ещё и сжатие происходит на лету, то и на сжатие время тратится, а что быстрей - передать чуть больше данных или сжимать и разжимать - сложный вопрос.

Замеряем время исполнения:
Функция для отметок сколько по времени часть кода исполняется
Код:
$arrTime=array();
function timestep($strStep){
global $arrTime;

$time_start = microtime();
$time_start = explode(' ', $time_start);
$time_start = $time_start[1] + $time_start[0];

if (count($arrTime)>0)
$arrTime[]=array('step'=>$strStep,'execution'=>$time_start- $arrTime[count($arrTime)-1]['timestamp'], 'timestamp'=>$time_start);
else $arrTime[]=array('step'=>$strStep,'execution'=>0, 'timestamp'=>$time_start);
}
Для исполнение просто вызываем функцию в нужных участках кода с параметром названия этого участка, а в конце кода просто смотрим что в массиве $arrTime творится.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузки для новичков Sharingan Авторские статьи 39 26.05.2010 19:52
Управление памятью в ядре Windows XP _Great_ С/С++, C#, Delphi, .NET, Asm 4 12.01.2008 02:17
Удобство и практичность веб-сайта и оптимизация поисковых систем _-Ramos-_ Статьи 0 09.12.2007 17:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ