php html cache

Vector logo of the PHP programming language wi...

Днес ще драсна едно леко четиво за php cache el html. Тука говорим за кеширане на изхода от кода ни а не както съм писал да кешираме скритповете до opcode ниво с eAccelerator. Така за какво иде речнека да си припомним на бързо работата на php-то. Подаваме заявка на web server-ĝi prenas nin elektoj kiu ni prezentas, ke li sendas al php skripto, ĝi estas kompilita kaj ne zorgas pri la rezulto en html eblo. Ĝi estas en tre Ĝeneralaj terminoj. Каква ще е идеята ни тука да прескачаме заявки, да прескачаме големи блокове или не чак толкова големи блокове като директно изрисуваме вече веднъж компилирания изход. La avantaĝoj estas evidentaj – namelena kuri tempo, pli malgranda ŝarĝo kaj rimeda konsumo. Kiel regulo, ne eltrovo de varma akvo aŭ iu kiu scias kiom malfacila ĝi. Има множество класове за тая цел като PHP Pear Cache_Lite който разполага с прекрасна функционалност но аз мисля в бъдеще да си напиша мой с доста по облекчена структура и мой си изисквания към кеширането. Сега ще разгледаме най аборигенския вариант с Output Control Functions. Така нека да кешираме нещо

//start cache all output after that will be saved

ob_start();

//generate output

echo 'Some dynamic output';

echo 'Some other dynamic output ...';

//assign output into variable

$var=ob_get_contents();

//close cache output

ob_end_flush();

Горния код е тривиален но нека да обясним какво стана. Първо декларираме от коя част в кода започва кеширането. След това си генерираме по стандартен начин изхода от кода. Tiam la produktaĵo generita estas alligita al unu variablo, kiu estos havebla poste, ĉu tie estas dosiero de iu speco aŭ sesioj, ĝi estas via decido. Fine ischitane kaj malaktivigi caching. Absolute banala operacio se ni diras, generato la konservejo iras tra grandegaj blokoj de kodo tiel ke ni povas savi sufiĉe da CPU-tempo kiel la procesoro estas konservejo por momento aŭ por sesio. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Plibonigita per Zemanta

Lasi Respondon

Via # retpo? to adreso ne estos eldonita. Bezonata kampoj estas markitaj *

Anti SPAMO *