ПредишенСледващото

Habrahabr не е намерен само голяма статия за PHP оптимизация.

Един от основните критерии за успеха на всяка Интернет ресурс е неговата скорост и с потребителите става все по-взискателни по този критерий. Оптимизация на PHP-skiptov - е един от начините за гарантиране на скоростта на системата.
В тази статия бих искал да Ви представим на обществеността колекция от съвети и факти на скриптове оптимизация. Събрани около мен достатъчно дълго, тя се основава на няколко източника и лични експерименти.

Защо е колекция от съвети и факти, а не твърди и бързи правила? Защото, както аз съм убеден, че е "абсолютно правилно оптимизация." Много от техниките и правилата са противоречиви и абсолютно невъзможно да ги изпълни. Трябва да изберете набор от методи, които са приемливи за използване, без да се застрашава безопасността и удобна. Взех позицията на препоръчителен и затова имам съвети и факти могат да се наблюдават и да не могат да наблюдават.

За да се избегне объркване, аз разделен всички съвети и факти на 3 групи:

  • Оптимизиране на нивото на логически и организационни приложения
  • код за оптимизация
  • безполезен оптимизация

Групи са отбелязани пробация и някои елементи могат да бъдат приписани на повече от един от тях. Фигури са за средния сървър (LAMP). В статията не се занимава с въпроси, свързани с ефективността на различните трети страни, технологии и рамки, тъй като това е тема за друг разговор.

Оптимизиране на нивото на логически и организационни приложения

Много от съвети и факти, свързани с оптимизацията на групата, са много подходящи и даде много голяма печалба във времето.

  • Постоянно профилиране кода на сървър (xdebug) и клиент (Firebug), който ще разкрие тясно пространство код
    Трябва да се отбележи, че е необходимо да се профил и сървър и клиент част, тъй като не всички грешки в сървъра могат да бъдат открити на сървъра.
  • Количеството използван в функциите на програмата на потребителите, не се отразява на скоростта на
    Това ви позволява да използвате програмата в безброй дефинирани от потребителя функции.
  • Активно използване на потребителски функции
    Положителният ефект се постига благодарение на факта, че функциите в рамките на експлоатацията се извършва само с локални променливи. Ефектът от това е по-голяма от разходите за разговори към дефинирани от потребителя функции.
  • "Критично тежка" функция, е желателно да се приложи на чужд език като разширение на PHP програмиране
    Тя изисква умения за програмиране на чужд език, което значително увеличава времето за развитие, но в същото време позволява използването на техники за PHP е възможно.
  • Обработка на статичен HTML файл-бързо, отколкото се тълкува PHP файл
    Разликата във времето на базата на клиента може да бъде около 1 секунда, така че има смисъл ясно разделение на статични и PHP страници генерирани средства.
  • Размерът на преработени (свързана) файл се отразява на скоростта
    Приблизително 2 Kb обработка на всеки 0.001 секунди изразходвани. Този факт ни принуждава да извършват кода на скрипта минимизиране когато прехвърля на производствения.
  • Опитайте се да не се използва постоянно require_once или include_once
    Тези функции трябва да се използват, ако има възможност за повторно четене на файла, в други случаи е желателно да се използва изискват и включват.
  • Когато разклоняване алгоритъм, ако има проекти, които не могат да бъдат обработени и сумата от порядъка на 4 KB или повече, по-оптимално да ги свърже с помощта на включите.
  • Желателно е да се използват данните, изпратени от клиента
    Това е така, защото при проверка на данните от страна на клиента, рязко намали броя на заявките с невярна информация. данните от изпитването на клиентската система застроен предимно с помощта на JS и твърда форма елемент (изберете).
  • Желателно е да се големи DOM структури за набори от данни за изграждане на клиента
    Това е един много ефективен метод за оптимизация, когато се работи с дисплея на големи количества данни. Същността му е, както следва: на сървъра подготвя масива от данни и се предава на клиента, както и изграждането на DOM структури условие JS функции. В резултат на това, натоварването е частично се преразпределя от сървъра към клиента.
  • Системи, базирани на технологията AJAX, много по-бързо, отколкото системи, които не използват тази технология
    Това се дължи на спад в обема на продукцията и преразпределение на натоварването на клиент. На практика скоростта, с AJAX системи са 2-3 пъти по-висока. Забележка: AJAX, от своя страна, създава редица ограничения върху използването на други методи за оптимизация, например, работят с буфера.
  • При получаване на пост-заявка винаги се върне нищо, дори можете да празнина
    В противен случай, клиентът ще бъде изпратен страница за грешка, която тежи няколко килобайта. Тази грешка е много често при използване на технологични системи за AJAX.
  • Извличане на данни от файл-бързо, отколкото от базата данни
    Това до голяма степен се дължи на разходите за свързване към базата данни. За моя изненада, огромен процент от програмистите маниакална магазин всички данни в базата данни, дори и при използване на файлове по-бързо и udobnee.Zamechanie: файлове могат да се съхраняват данни, които не се провеждат за търсене, в противен случай базата данни да се използват.
  • Не се осъществи връзка с базата данни, без да се налага да се
    По неизвестни мен, много програмисти да се свърже с базата данни на етапа на определяне на четенето, въпреки че те могат да продължат да правят заявки в базата данни. Това е лош навик, който струва средно 0,002 секунди.
  • Използвайте постоянна връзка с база данни, с малко на брой едновременно активни клиенти
    разходи за доходи на времето, причинени от липсата на връзка с базата данни. В момента разликата от около 0,002 секунди. Забележка: голям брой потребители да използват постоянни връзки, не е желателно. При използване на постоянни връзки, трябва да е механизъм, който да сложи край на връзки.
  • С помощта на интелигентната база данни заявки по-бързо, отколкото с помощта на няколко прости
    Времевата разлика зависи от много фактори (количеството данни, конфигурация база данни и така нататък.) и се измерва в хилядни и стотни понякога секунди.
  • Използването на изчисленията на страната СУБД по-бързо от изчислителна на данни от страната на PHP, съхранявани в базата данни
    Тя се причинява от фактор, така че за изчисляване страна PHP изисква две искания към DB (извличане на данни и актуализиране). Времевата разлика зависи от много фактори (количеството данни, конфигурация база данни и така нататък.) и се измерва в хилядни и стотни от секундата.
  • Ако примерните данни от базата данни рядко се променят и тези данни е изготвен много потребители, че има смисъл да спаси извадковите данни във файл
    Например, можете да използвате следния прост подход: получаване на примерни данни от базата данни и да го запишете като поредица масив във файл, а след това на всеки потребител използва данните от файла. На практика тази техника за оптимизация може да даде кратно увеличение на скоростта на изпълнение на скрипта. Забележка: При използването на този метод се изисква да напишат инструментите за изграждане и промяна на данни, съхранявани файл.
  • Cache данни, които рядко се променя с помощта на Memcached
    спестяване на време могат да бъдат значителни. Забележка: за ефективно кеширане на статични данни, динамични данни за ефекта е намалена и може да са отрицателни.
  • Работа без обекти (не ООП) е по-бързо, отколкото работещи с обекти, около три пъти
    Памет "изяде" и др. За съжаление, PHP интерпретатор не може да работи с ООП толкова бързо, колкото обикновените функции.
  • По-големите размери масиви, толкова по-бавно, с които работят
    Загуба на време възниква от обработката на вложени структури.

код за оптимизация

Тези факти дават съвети и незначителен в сравнение с предишната група на усилване на скоростта, но взети заедно, тези техники могат да осигурят добро време финал.

безполезен оптимизация

Редица методи за оптимизация на практика не оказва голямо влияние върху скоростта на изпълнение на скриптове (спестяване на време по-малко от 0.000001 секунди). Въпреки това, тази оптимизация често е въпрос на спор. Донесох тези "безполезни" фактите да ви след това не ги обръщат много внимание, когато пишете код.

И накрая, искам да повторя, че съветите и факти дадените ми не са абсолютни, както и значението на тяхното използване зависи от конкретната ситуация. Трябва да се помни, че оптимизацията на скрипта е само една малка част от цялата процедура и оптимизация често е възможно да живеят в мир, без съветите по-горе.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!