Ruslails ceea ce este un flux de active

Înainte de Rails 3.1, aceste caracteristici au fost adăugate de bibliotecile terțe părți Ruby, cum ar fi Jammit și Sprockets. Rails 3.1 este integrat în mod prestabilit cu roți dințate utilizând pachetul Action Pack, care are o dependență de pinionul heme.







Sistemul de fișiere implicit din Rails 3.1 este activat. Acesta poate fi dezactivat în config / application.rb. dacă introduceți următoarea linie în definiția clasei de aplicație:

De asemenea, puteți dezactiva serverul de fișiere când creați o nouă aplicație prin trecerea opțiunii -skip-sprockets.

Utilizați valorile implicite pentru toate aplicațiile noi dacă nu aveți niciun motiv special pentru a evita sistemul de fișiere.

Caracteristici principale

Prima caracteristică a sistemului de fișiere este conectarea resurselor. Acest lucru este important în mediul de producție, deoarece poate reduce numărul de solicitări pe care browserul le cere să afișeze pagina. Browserele sunt limitate în numărul de solicitări pe care le pot efectua în paralel, astfel încât mai puține cereri pot însemna cea mai rapidă descărcare a aplicației.

Care sunt etichetele și de ce sunt necesare?

Etichete - o tehnică care realizează dependența numelui de fișier de conținutul său. Când modificați conținutul unui fișier, numele fișierului se modifică și el. În cazul unui conținut static sau recent actualizat, acesta oferă o modalitate ușoară de a spune că cele două versiuni ale fișierului sunt identice, chiar dacă acestea sunt pe servere diferite sau au o altă dată de înregistrare.

Când numele fișierului este unic și bazat pe conținutul său, antetele HTTP pot fi setate la cache-ul omniprezent (în CDN, de la ISP, în echipamentul de rețea sau în browser) astfel încât să aibă propria copie a conținutului. Când se modifică conținutul, eticheta se modifică și ea. Acest lucru va determina clienții aflați la distanță să solicite o nouă copie a conținutului. Această tehnică este cunoscută sub numele de "busting cache".







Tehnica folosită de Rails pentru etichete este de a insera hash-ul conținutului în nume, de obicei la sfârșit. De exemplu, fișierul global.css CSS poate fi redenumit folosind conținutul MD5 digest:

Aceasta este strategia adoptată de sistemul de fișiere Rails.

Strategia anterioară pentru Rails era să adauge un șir de interogări bazat pe date fiecărei resurse care a fost atașată utilizând ajutorul ajutătorului încorporat. În codul sursă, codul generat arată astfel:

Strategia bazată pe șirul de interogare a avut mai multe dezavantaje:

  1. Nu toate cache-urile au memorat conținutul în siguranță atunci când numele fișierului diferă numai în parametrii șirului de interogare.
    Steve Souders recomandă. "... evita șirul de interogare pentru resursele cache". El a constatat că în acest caz, 5-20% din interogări nu vor fi stocate în cache. În special, șirurile de interogare nu funcționează deloc cu unele rețele de distribuire a conținutului (CDN) pentru dezactivarea cache-ului.
  2. Numele fișierului poate fi diferit pe noduri diferite în medii cu mai multe servere.
    În mod implicit, șirul de interogare din Rails 2.x se bazează pe timpul de schimbare a fișierului. Atunci când resursele sunt plasate într-un cluster, nu există nici o garanție că timestamp-ul va fi același, ca rezultat, se vor folosi diferite valori, în funcție de serverul care va procesa cererea.
  3. Prea multe cache-uri oprite
    Când plasați resurse statice cu fiecare nouă versiune a codului, mtime-ul tuturor acestor fișiere s-a schimbat, forțând toți clienții la distanță să-i recupereze din nou, chiar dacă conținutul acestor resurse nu sa schimbat.

Etichetele rezolvă aceste probleme evitând șirurile de interogare și asigurându-se că numele fișierului se bazează pe conținutul său.

În mod prestabilit, etichetele sunt activate pentru producție și sunt dezactivate pentru toate celelalte medii. Puteți să le activați sau să le dezactivați în configurație utilizând opțiunea config.assets.digest.







Trimiteți-le prietenilor: