Blitz invizibil

Îmbunătățirea aplicațiilor Web cu utilizarea ascunsă a Flash Player

Deci, să începem

Depozit local Flash

Multe aplicații Web trebuie să stocheze datele despre starea clienților. Uneori, acest lucru ar putea fi doar un identificator de sesiune pe care îl puteți utiliza pentru a prelua o stare de pe server din memorie sau dintr-o bază de date. Cu toate acestea, multe aplicații Web evită în mod deliberat stocarea stărilor de pe server pentru scalabilitate. În acest caz, statul ar trebui să fie stocat pe computerul client. În plus, este adesea de dorit ca această stare să fie menținută după încheierea sesiunii de utilizator actuale.







Timp de mulți ani, modul implicit pentru aceasta a fost cookie-urile HTTP. Cu toate acestea, această metodă are dezavantajele sale. Este dificil de folosit din punctul de vedere al dezvoltatorului, deoarece fizic este doar un antet HTTP. Mai important, acesta este un potențial decalaj de securitate. Cu fiecare cerere, cookie-urile HTTP sunt trimise înainte și înapoi între client și server, astfel încât toate datele conținute în ele pot fi interceptate. Acest fapt este folosit adesea pentru a "fura cookie-urile" folosind scripting / falsificări între site-uri. Dacă infractorii cibernetici fură cookie-urile, pot deschide și utiliza cu ușurință contul corespunzător.

Dar cel mai mare dezavantaj al cookie-urilor HTTP este dimensiunea lor limitată. Diferitele browsere stabilesc restricții diferite privind dimensiunea maximă a modulelor cookie HTTP alocate domeniului. Specificația HTTP stabilește o limită de 4 KB, și asta e tot ce vă puteți baza. Deci, ce să faceți dacă clientul trebuie să stocheze mai mult de 4 KB? Dacă v-ați gândit vreodată că ar fi frumos să scrieți un algoritm de compresie în stilul GZIP în Java ™ Script, atunci aceasta este sansa ta. Alternativ, puteți utiliza o alternativă, cum ar fi Flash.

Obiectele comune partajate

Flash Player creează un spațiu local de stocare pentru datele de aplicație Flash. Implicit, este limitat la 100 KB pe domeniu. Așa este: aveți douăzeci și cinci de ori mai mult spațiu decât să utilizați modulele cookie HTTP. Există și alte diferențe importante. Datele Flash de pe partea clientului nu sunt trimise niciodată serverului, deoarece nu au nimic de-a face cu HTTP. Desigur, dacă doriți, puteți lua aceste date și le puteți trimite pe serverul lor. Nimic nu o împiedică. Cu toate acestea, puteți alege ce date să trimiteți și cum să le transferați. Dacă aceste date sunt într-adevăr necesare atât pe partea clientului, cât și pe partea de server, atunci va fi un pic dificil. Dar acest lucru este, de obicei, mult mai sigur, pentru că trebuie să transmiteți în mod clar aceste date prin intermediul rețelei.

API-ul Flash pentru stocarea și preluarea datelor locale se numește SharedObject. În tehnologia Flash, există conceptul de obiecte partajate SharedObject. care pot fi șterse, astfel încât cele care sunt stocate numai în client sunt deseori denumite SharedObject local. API-ul este foarte simplu și vă permite să stocați și să extrageți în mod arbitrar obiecte complexe utilizând paradigma cheie-valoare. Lista 1 arată un cod simplu pentru stocarea și recuperarea SharedObjects.

Listarea 1. Păstrarea și recuperarea SharedObjects

Fiecare instanță SharedObject are o proprietate de date care poate fi considerată ca o tabelă hash pentru stocarea datelor. Aceasta este ceea ce face a doua linie a funcției saveLocal. Ultima linie stochează SharedObject pe disc (culoare). Asta e tot ce trebuie să faceți pentru a salva datele la nivel local. Dacă utilizați SharedObjects intensiv și începeți să vă apropiați de limita de 100 KB, puteți adăuga la detectoarele de evenimente. Acest lucru vă va permite să răspundeți la evenimente precum "flush finalizat" sau "flush failed".







Cum se face invizibil

Listing 3. Încărcarea unui Flash invizibil

Alte modalități de stocare locală

Am menționat că Flash poate fi o modalitate atractivă de a stoca date pe partea clientului în comparație cu modulele cookie HTTP. Cu toate acestea, există alte tehnologii Web care au adoptat aceeași paradigmă ca SharedObjects din Flash. De fapt, de mulți ani browserele diferite oferă API-uri similare. Cu toate acestea, aceste API diferă, de regulă, de la un browser la altul. Prin urmare, trebuie să definiți un browser și să utilizați API-ul corespunzător. Flash oferă, de asemenea, o alternativă consistentă. Codul dezvoltat în acest articol va funcționa pe aproape orice browser: de la Internet Explorer 6 și Firefox 2 până la cea mai recentă versiune a acestor browsere. Cu toate acestea, versiunile noi oferă, de asemenea, o alternativă coerentă. Specificația HTML 5 include API localStorage. Acesta este implementat în cea mai recentă versiune a browserelor majore, inclusiv IE 8 și Firefox 3.5. Deci, dacă nu trebuie decât să vă faceți griji cu privire la aceste browsere, localStorage este o bună oportunitate. Dacă trebuie să vă faceți griji și în privința browserelor mai vechi (IE 6, IE 7 etc.), este mai ușor să recurgeți la Flash. Acum, să ne uităm la un alt loc în care Flash poate deschide noi posibilități: un Ajax interdomeniu.

Ajax pe domenii multiple

Ajax a devenit instrumentul de programare web omniprezent, este o parte integrantă a oricărei aplicații Web. Una dintre principalele limitări ale lui Ajax este regula notorică a aceleiași surse. Dacă o pagină Web este transferată de la a.com, puteți efectua apeluri Ajax (mai exact, XMLHttpRequest) numai la a.com. Nu puteți să contactați, de exemplu, b.com. Nu contează că a.com și b.com aparțin companiei dvs.; browserul nu contează nici. Cu toate acestea, acest lucru nu se aplică aplicațiilor Flash.

Listarea 4. Fișierul de politică pentru domeniul de căutare Twitter

Acesta este un dosar de politici deosebit de interesant. Acesta oferă acces la SWF din orice domeniu (acest lucru este indicat de wildcard "*"). Astfel, orice aplicație Flash poate apela API-ul de căutare Twitter. Aceste fișiere de politici sunt comune pentru site-uri web mari cu API publice. Cu toate acestea, unele site-uri utilizează politici mai restrictive care permit accesul numai din acele domenii care sunt deținute sau întreținute de parteneriat. Folosind fișiere de politici, obțineți control detaliat asupra persoanelor care pot accesa serverele dvs. și care nu pot. Luați în considerare modul în care puteți extinde aceste caracteristici la aplicațiile Ajax.

Realizarea domeniului internațional

Listarea 5. Utilitar SWF cross-domain

Funcția sendRequest are de asemenea trei parametri opționali. ActionScript permite parametrii suplimentari, dar trebuie să aibă valori implicite. Primul este metoda HTTP utilizată, de obicei fie GET. sau POST. În acest articol am făcut metoda implicită GET. Dar poate fi ușor înlocuit cu POST. dacă serverul de la distanță o cere. Următorul parametru suplimentar se numește conținut. Acesta este un obiect de date generic care poate conține perechi de nume-valoare pe care doriți să le trimiteți la serverul de la distanță. Ar trebui să fie utilizat atunci când transferați date către un server de la distanță. În cele din urmă, ultimul parametru opțional este un alt obiect generic de date pentru anteturi. Se utilizează pentru a seta antete HTTP speciale care sunt trimise în cadrul unui apel la un server de la distanță.

Listing 6. Apelarea căutării pe Twitter

Abordări de apel intersectoriale

Timp de mulți ani, Flash a reușit să facă apeluri în mai multe domenii, precum și să stocheze date la nivel local. Ca și în cazul stocării locale, unele browsere Web oferă o metodă proprie și au fost făcute încercări de standardizare. Dar nu au fost la fel de reușite ca în cazul depozitării locale. Deși există în prezent un standard pentru apelurile Ajax pe mai multe domenii, acesta nu este implementat în IE 8. În schimb, IE 8 oferă propriul mod de a face apeluri Ajax intersectoriale. Această implementare non-standard este noutatea IE 8, iar în versiunile mai vechi ale IE nu există. Din nou, Flash oferă un model care funcționează pe toate browserele.

Alăturați-vă grupului Dezvoltare Web de pe site-ul "My DeveloperWorks"

Discutați subiectele și partajați resursele de dezvoltare Web cu alți programatori în grupul My developerWorks Web development.

Nu sunteți membru al comunității "My DeveloperWorks"? Alăturați-vă acum!

concluzie

Acest articol explică modul în care se utilizează Flash pentru a extinde capabilitățile aplicațiilor Web. Acum puteți mări semnificativ capacitatea memoriei locale disponibile pentru aplicația dvs. Acest lucru vă permite să stocați cantități mari de date pe partea clientului. De asemenea, ați învățat cum să efectuați apeluri Ajax pe mai multe domenii de la aplicații Web utilizând Flash. Aceasta este doar o mică parte a capabilităților oferite de Flash. Dacă găsiți altceva care v-a ajutat, puteți utiliza aceleași metode: Faceți Flash invizibil și inserați funcțiile sale cu ExternalInterface.







Articole similare

Trimiteți-le prietenilor: