1. Начало
  2. Хостинг
  3. PHP
  4. Ускоряване на PHP приложения чрез opcode кеширане

Ускоряване на PHP приложения чрез opcode кеширане

За ускоряване на сайтовете се използват различни технологии за кеширане. Тези технологии се прилагат на различни етапи - от генерирането на HTML кода на сървъра до изобразяването на страницата и ресурсите ѝ в уеб браузъра на потребителя.

Когато се прилага оптимизация на времето за зареждане на сайта, най-често се използват технологиите за кеширане, които работят на ниво приложение като Memcached и Redis, на ниво уеб сървър като SuperCache и на ниво уеб браузър (кеширане в самия браузър).

Към технологиите за кеширане на ниво приложение има още възможности, които са специфични за програмния език, на който е написано приложението. Например за PHP приложенията може да се използва PHP ускорителят OPcache, който кешира, оптимизира и ускорява процеса по обработка на PHP скриптовете.

OPcache се поддържа при СуперХостинг.БГ на всички сървъри за споделен хостинг и Managed VPS. OPcache може да се активира или деактивира през cPanel » PHP Manager.

Какво е opcode кеширане?

Opcode кеширане означава кеширане на байткода, който е резултат от компилирането на PHP първичния код (source code). Байткодът представлява серии от операционни кодове (operation codes), наричани "opcodes". Тези кодове/инструкции се изпълняват от PHP интерпретатора, за да се получи крайният HTML код, който се изпраща към браузъра. За да се спести постоянното компилиране на PHP кода, байткодът може да се кешира (opcode кеширане).

PHP интерпретаторът (Zend Engine) обработва PHP кода в няколко стъпки. Ето как от PHP код (в PHP файл на WordPress) се получава HTML кода на страницата, който се зарежда в браузъра:

  • Интерпретаторът чете PHP файла от диска.
Първичният PHP код (source code), намиращ се в PHP файла.
  • Интерпретаторът сканира кода, който е в текстов формат, предназначен за разбиране и четене от човек, и го преобразува до байткод (инструкции, които интерпретаторът разбира).
Байткод - инструкциите (opcodes), които интерпретаторът ще изпълни.
  • Интерпретаторът изпълнява инструкциите (байткода), а резултатът е HTML кодът на страницата.
HTML код - резултатът от изпълнението на байткода.

Байткодът за дадения PHP скрипт е един същ, стига да не се е променил PHP първичния код във файла.

Стъпките преди изпълнението на байткода, се извършват при всяко извикване на PHP скрипта, при всяка заявка.

Първите две стъпки може да се спестят, като вече генерираният байткод се запише за следваща употреба.

Кеширането на байткода спестява постоянното компилиране на PHP изходния код, което от своя страна спестява процесорно време и четене от диска. Това се отразява в ускорено изпълнение на PHP скиптовете, което от своя страна допринася за ускорена работа на PHP приложението, уебсайта.

OPcache, APC, eAccelerator

Zend OPcache е PHP модул, който е добавен към PHP пакета в PHP версия 5.5. Този модул е заместител на остарелите PHP модули като APC и eAccelerator. За новите версии на PHP 7.x се препоръчва активирането му.

PHP ускорителите APC (Alternative PHP Cache) и eAccelerator са изоставени от разработка и поддръжка проекти. Възможно е да се използват за PHP версии преди 5.5.

Бележка: Технологиите за кеширане на байткод като OPcache и технологиите за кеширане на данни като Memcached и Redis имат различна цел и са независими едни от други. OPcache ускорява достъпа до кода и изпълнението му, докато Memcached и Redis ускоряват достъпа до данните (page cache, database cache, object cache). Двата вида кеширане може да работят едновременно и дори се препоръчва да се активират, за да се ускори зареждането на сайта.

Обновена: 09.11.2019

Беше ли Ви полезна тази статия?

Вижте още