Php și web
Pentru a optimiza rețea prin intermediul unui mecanism de stocare unul primit prin intermediul unor documente HTTP în cache în scopul refolosirii acestora, fără a recurge la serverul sursă. Documentele stocate în memoria cache va fi disponibilă data viitoare când este accesat, fără descărcare de pe serverul principal, care este destinat pentru a spori accesul clienților viteza la acestea și de a reduce fluxul de trafic de rețea.
Se memorează în cache sunt de două feluri - locale și generale. Memoria cache locală este stocat direct pe discul de client, de a crea și gestiona browser-ul său. General - organizație cache proxy sau furnizor, și poate consta dintr-unul sau mai multe servere proxy. cache-ul local este prezent, probabil, la fiecare browser utilizează o parte semnificativă din comune persoanelor care utilizează internetul. Și dacă o mică parte din site-uri estimate acum fluxul de trafic, viteza de descărcare - un criteriu important care trebuie luate în considerare atunci când în curs de dezvoltare dvs. web-proiect.
Pot fi stocate în memoria cache a paginii este determinată de informațiile dinamice în sursa de date. Astfel, nevoia de cache-ul este determinat de tine, în funcție de timp anticipată a paginii de viață.
Când vine vorba de selectarea eșantionului pentru baza de date (de exemplu, căutarea de cuvânt introdus de utilizator), atunci această pagină asigurați-vă că pentru a cere de la server la fiecare apel, fără a utiliza un cache, deoarece numărul de cuvinte solicitate pe care doriți este foarte mare, iar dacă avem de a face cu schimbarea set de date, cache este lipsită de sens. Sau este vorba de formarea de vizitatori presupun programul vine (care se schimbă cu fiecare vizită, care este, practic, cu fiecare apel), apoi cache-ul este pur și simplu dăunătoare.
Cu toate acestea, dacă vorbim despre același grafic, dar ieri, este recomandat cache-ul, deoarece acestea nu vor mai fi schimbat și ne putem și resursele de utilizator și de timp pentru a încărca salva aceste pagini prin plasarea lor într-o memorie cache locală sau partajat. Ca o continuare a acestei situații, formarea calendarului nu este real-time și oră. Apoi, puteți prezice data la sfârșitul „termenul de valabilitate“, datele generate.
PHP program-control poate cache rezultatele funcționării sale, pentru a forma câmpuri suplimentare în antetul funcției provocare răspuns HTTP Header ().
Câteva afirmații generale caracteristice nu numai pentru PHP-program:
- Pagini transmise pe POST niciodată stocate în memoria cache.
- Pagini solicitate pe GET și care conțin parametri (în URL-ul este prezent „?“) Nu este stocat în memoria cache, cu excepția cazului în care se indică altfel.
Astfel, în majoritatea situațiilor de instrucțiuni suplimentare în program nu trebuie să adăugați. Repere să fie aduse în atenția poate fi redusă la două:
- interzicerea cache a documentelor din cache în mod implicit
- caching de documente care nu pot fi punerea în cache implicită.
Această problemă apare pentru script PHP se numește fără parametri, sau este directoarele de index, dar generează datele personale în conformitate cu utilizatorul (de exemplu, pe baza cookie-uri sau agent utilizator) sau de lucru, pe baza datelor care se schimbă rapid. În conformitate cu HTTP / 1.1 putem opera următoarele domenii:
- Expiră - Specifică data de expirare a documentului. Setarea-l în trecut determină interzicerea cache pentru pagina.
- Cache-Control: no-cache - managementul cache. Valoarea nu-cache definește cache interdicție această pagină. Pentru versiunea HTTP / 1.0 funcționează "Pragma: nu-cache".
- Last-Modified - Data Ultimele modificări de un conținut. Câmpul este real numai pentru pagini statice. Apache înlocuiește acest domeniu cu valoarea Data câmp pentru paginile generate dinamic, inclusiv paginile care conțin SSI.
Site-ul www.php.net dat următorul cod pentru a dezactiva cache.
Cu toate acestea, eu cred că acest antet este redundantă. În cele mai multe cazuri:
Pentru a marca un document ca „învechit“ ar trebui să stabilească Expiră egală cu câmpul Dată.
Ei bine, nu ar trebui să uităm că formele cerute pe POST, de asemenea, nu sunt supuse cache.
Problema inversă, poate părea la prima vedere absurd. Cu toate acestea, în acest există o nevoie. În plus față de simpla reducerea la minimum a traficului în dezvoltarea web-program ar trebui să ia în considerare confortul de a lucra cu utilizatorul acesta. De exemplu, unele dintre paginile dvs. de server sunt generate pe baza datelor de masă statice. Posibilitatea de a le include în serverul de cache-ul va îmbunătăți considerabil viteza de utilizator, și parțial scuti dvs. din numeroase regenerate această pagină. Titlul permit stocarea pe server proxy:
Caching înainte de expirarea corectitudinii
Soluția de mai sus este destul de simplu, deși este potrivită pentru majoritatea sarcinilor. Dar protocolul HTTP / 1.1 are mijloace pentru un management mai subțire un cache de pagini, și există sarcini care necesită utilizarea acestor mecanisme. Ca un exemplu - web-aplicații pentru a lucra cu datele unui volum mare și a prezis dinamism. Corectitudinea datelor pot fi setate ca data actualizările de prognoză, precum și pentru a modifica conținutul. Pentru aceste cazuri, utilizați diferite antete de control cache.
Principala sarcină - pentru a obține o dată viitoare luni în format RFC 1123
O altă abordare utilizată la informații mai mari de actualizare operaționale și de trafic simultan de mare de server (în caz contrar cache nu ar fi eficientă) este de a utiliza antetul Cache-Control: max-age = secunde, determină timpul după care documentul este considerat învechit și are o prioritate mai mare la calcularea " prospețime „a documentului.
Dacă publicați știri cu un interval de 30 de minute:
Luați în considerare exemplul emiterii unei imagini dintr-o bază de date identificat prin ID-ul lor. Apelați pagina este după cum urmează:
astfel încât în funcție de pagina de reguli nu sunt stocate în memoria cache (sunt parametri), dar un antet poate fi să-l controleze.
Și plăcută (sau neplăcută) mesajul utilizatorilor Apache din Rusia. Deoarece serverul de demult ori oferă utilizatorului codificat pe ea furnizează în mod automat toate paginile (nu numai dinamic) în afara ban cache.
Așa că toate paginile nu sunt memorate în cache. Formarea în Expiră script-ul antet nu are nici un efect. De ce se face și unele dintre metodele de luptă sunt descrise pe apache.lexa.ru și nu este necesar să se reproducă aceste sfaturi aici. Având în vedere munca PHP + Rusă Apache aici este modul în care poate afecta stocare în memoria cache.
Pentru scripturi Deducerea imagini simplu situație - Apache Rusă nu codificați (deci nu ustanavlivaetsrok expirare) documente cu tipul MIME de imagine / *. Pentru a utiliza cache-ul de documente de tip text, probabil, ar trebui să folosească „Cache-Control: privat, max-age =“ pentru a rezolva paginile stocate în memoria cache în browser. Cu toate că această ipoteză teoretică, nu a dovedit.
„Expiră -. Specifică data de expirare a documentului este setarea în trecut determină interzicerea cache pentru pagina ..
Cache-Control: no-cache - managementul cache. Valoarea nu-cache definește cache interdicție această pagină. Pentru versiunea HTTP / 1.0 funcționează "Pragma: nu-cache".
Last-Modified - Data Ultimele modificări de un conținut. Câmpul este real numai pentru pagini statice. Apache înlocuiește acest domeniu cu valoarea Data câmp pentru paginile generate dinamic, inclusiv paginile care conțin SSI.
Site-ul www.php.net dat următorul cod pentru a dezactiva cache.
Cu toate acestea, eu cred că acest antet este redundantă. În cele mai multe cazuri:
header ( "Expira: Joi un/01/1970 00:00:01 GMT");
Pentru a marca un document ca „învechit“ ar trebui să stabilească Expiră egală cu câmpul Dată.
header ( "Expira:" gmdate ( "D, d M Y H: i: s".) "GMT");
Ei bine, nu ar trebui să uităm că formele cerute pe POST, de asemenea, nu sunt supuse cache. "
Jumătate nonsens, jumătate din zi și nu este exact rulează,
pentru a dezactiva cache suficient
header ( "Cache-Control: no-magazin, nu-cache, trebuie să-revalidate, max-age = 0");