Za ubrzanje sajtova koriste se različite tehnologije keširanja. Ove tehnologije se primenjuju u različitim fazama: od generisanja HTML koda na serveru do prikazivanja stranice i njenih resursa u brauzeru korisnika.
Prilikom optimizacije vremena učitavanja stranice, najčešće se koriste tehnologije za keširanje koje rade na nivou aplikacije, kao što su Memcached i Redis, na nivou servera kao što je SuperCache i na nivou brauzera (keširanje u samom brauzeru).
Tehnologije keširanja na nivou aplikacije takođe imaju mogućnosti koje su specifične za programski jezik na kom je aplikacija napisana. Na primer, PHP aplikacije mogu da koriste PHP akcelerator OPcache, koji kešira, optimizuje i ubrzava proces obrade PHP skripti.
Šta je to opcode keširanje?
Opcode keširanje označava keširanje bajtkoda, koje je rezultat kompilacije izvornog koda PHP (source code). Bajtkod je niz operativnih kodova (operation codes) koji se nazivaju “opcodes“. Ove kodove/instrukcije izvršava PHP interpreter, kako bi se dobio konačni HTML kod koji se šalje brauzeru. Kako bi se uštedela konstantna compilacija PHP koda, bajtkod može da se kešira (opcode keširanje).
PHP interpreter (Zend Engine) obrađuje PHP kod u nekoliko koraka. Evo kako izgleda kod u index.php fajlu za WordPress na svakom koraku:
- Interpreter čita PHP fajl sa diska.
- Interpreter skenira kod koji je u tekstualnom formatu, namenjen ljudskom čitanju i razumevanju i pretvara ga u bajtkod (instrukcije koje će interpreter razumeti)
- Interpreter izvršava instrukcije (bajtkoda), a rezultat je HTML kod na stranici.
Bajtkod za datu PHP skriptu je isti sve dok se PHP izvorni kod u datoteci ne promeni.
Koraci pre izvršavanja bajtkoda se prave svaki put kada se poziva PHP skripta, za svaki zahtev.
Prva dva koraka se mogu uštedeti čuvanjem već generisanog koda za kasniju upotrebu.
Keširanje bajtkoda štedi konstantnu kompilaciju PHP izvornog koda, što zauzvrat štedi procesorsko vreme i vreme čitanja sa diska. To se odražava na ubrzano izvršavanje PHP skripti, što zauzvrat doprinosi ubrzanom radu PHP aplikacije, tj. veb-sajta.
OPcache, APC, eAccelerator
Zend OPcache je PHP modul koji je dodat u PHP paket u PHP verziji 5.5. Ovaj modul predstavlja zamenu za zastarele PHP module, kao što su APC i eAccelerator. Za novije verzije PHP 7.x se preporučuje da ga aktvirate.
PHP akceleratori APC (Alternative PHP Cache) i eAccelerator su napušteni zbog projekata razvoja i podrške. Moguće ih je koristiti za PHP verzije pre 5.5.