За ускоряване на сайтовете се използват различни технологии за кеширане. Тези технологии се прилагат на различни етапи – от генерирането на HTML кода на сървъра до изобразяването на страницата и ресурсите ѝ в уеб браузъра на потребителя.
Когато се прилага оптимизация на времето за зареждане на сайта, най-често се използват технологиите за кеширане, които работят на ниво приложение като Memcached и Redis, на ниво уеб сървър като SuperCache и на ниво уеб браузър (кеширане в самия браузър).
Към технологиите за кеширане на ниво приложение има още възможности, които са специфични за програмния език, на който е написано приложението. Например за PHP приложенията може да се използва PHP ускорителят OPcache, който кешира, оптимизира и ускорява процеса по обработка на PHP скриптовете.
Какво е opcode кеширане?
Opcode кеширане означава кеширане на байткода, който е резултат от компилирането на PHP първичния код (source code). Байткодът представлява серии от операционни кодове (operation codes), наричани „opcodes„. Тези кодове/инструкции се изпълняват от PHP интерпретатора, за да се получи крайният HTML код, който се изпраща към браузъра. За да се спести постоянното компилиране на PHP кода, байткодът може да се кешира (opcode кеширане).
PHP интерпретаторът (Zend Engine) обработва PHP кода в няколко стъпки. Ето как от PHP код (в PHP файл на WordPress) се получава HTML кода на страницата, който се зарежда в браузъра:
- Интерпретаторът чете PHP файла от диска.
- Интерпретаторът сканира кода, който е в текстов формат, предназначен за разбиране и четене от човек, и го преобразува до байткод (инструкции, които интерпретаторът разбира).
- Интерпретаторът изпълнява инструкциите (байткода), а резултатът е 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.