Livrarea imaginilor prin url-ul catre fisierul imagine
Construirea paginii html va contine etichetele imagine <img> cu url-ul direct spre fisierul imagine in continutul atributului src:
<img src=”http://exemplu.ro/director1/director2/imagine1.jpg” width=”300″ height=”400″ />
Se pare ca este cel mai rapid mod de transfer al imaginilor catre browserul client.
Livrarea imaginilor prin rularea unui script (ex: .php)
Eticheta imagine va contine in atributul src url-ul unui script de server (ex: .php) care acceseaza fisierul imagine, il citeste si incarca in memorie si il reda prin hederele http de imagine catre browser.
Daca in fata webserverului este plasat un server varnish pentru caching, scriptul respectiv are acces la webserver si este rulat pentru fiecare imagine livrata in acest mod.
Daca traficul este mare, webserverul va fi solicitat in consecinta ceea ce nu este de dorit si face sistemul putin eficient
Considerente de securitate
Daca scriptul este rulat automat de roboti externi manevrati de persoane rau intentionate, se poate ajunge la o incarcare oricat de mare a procesorului ceea ce duce la blocarea functionarii.
Solutii pentru utilizarea scriptului de livrare imagini
Daca se doreste utilizarea unui astfel de script, o soluytie poate fi ca intreaga eticheta imagine sa fie construita pe baza acelui script. Daca imaginea este deja creata, src-ul va contine url-ul imaginii exustente.
Daca imaginea nu exista, ea va fi creata, salvata pe server si din nou src-ul va contine url-ul imaginii tocmai create
Este totusi o incarcare suplimentara a serverului si va trebui ca scriptul sa treaca de varnish. Cum? Probabil prin rularea unui script Java Script cu apelul scriptului de server prin AJAX.
Dar toate astea complica lucrurile. Care ar fi totusi utilitatea unei astfel de solutii? Ideea de creare a imaginii on-the-fly, din mers. Utila pentru widget-uri care afiseaza stiri externe site-ului, preluate prin fluxuri de stiri (feed-uri in format .xml) de pe alte site-uri.
Solutie pentru afisarea imaginilor stirilor externe
Este bine ca imaginile externe sa fie regenerate si salvate pe serverele interne pentru a evita apeluri catre exterior la fiecare inarcare a paginii web.
Dar crearea imaginii interne pe baza imaginii externe se poate face exatc la momentul preluarii feed-ului. Aceasta preluare se efectueaza de regula periodic pe baza rularii unii cron job.
Atunci e momentul crearii imaginii iar la afisarea paginilor, imagine aexterne este livrata clasic prin eticheta <img cu atribututl src url-ul imaginii interne (care poate fi taiata la momentul crearii exact pe dimensiunile necesare in widgetul de afisare).
Atributele width si height ar fi bine sa existe pentru optimizarea afisarii html-ului. Avem valorile din momentul crearii imaginii.
Sper ca am fost de folos cu ceva, cuiva.
Spor!