Rusrails mi fayloprovod (eszköz csővezeték)

Mielőtt Rails 3.1, ezeket a tulajdonságokat adunk a harmadik fél által Ruby könyvtárak, mint a Jammit és Csillagok. Sínek 3.1 integrálva alapértelmezésben Lánckerekek Az Action Pack, ami függ a hem lánckerék.

Fayloprovod alapértelmezett Rails 3.1 tartalmazza. Ez lehet kikapcsolni a config / application.rb. ha tesz a következő sort a meghatározása a kérelem osztály:

Szintén fayloprovod lehet kapcsolni, ha új alkalmazásokat átadásával lehetőség -skip-lánckerék.

Akkor érdemes használni az alapértelmezett érték az összes új alkalmazásokat, ha van egy konkrét ok, hogy ne fayloprovoda.

Főbb jellemzők

Az első funkció vegyület fayloprovoda források. Ez fontos a termelési környezetben, mivel ez csökkentené a kérelmek száma szükséges a böngésző az oldal megjelenítéséhez. A böngészők korlátozott a lekérdezések száma, akkor egyidejűleg kell végrehajtani, így kevesebb kérelmet jelentheti gyors letöltés az alkalmazás.

Milyen címkék és miért van szükség?

Label - egy olyan technikát, amely végrehajtja a függőség a fájl nevét a tartalom. Ha a fájl tartalmát módosítsa, a fájl neve is megváltozik. A statikus, vagy csak ritkán frissített tartalom nyújt egy egyszerű módja annak, hogy azt mondják, hogy a két változat a fájl azonos, akkor is, ha a különböző szervereken, vagy egy másik időpontban az elhelyezést.

Ha a fájlnév egyedi és a tartalom alapján, a HTTP-fejléceket lehet telepíteni mindenhol caching (a CDN. A szolgáltató a hálózati hardver vagy a böngésző), ezért kellett a saját példányát a tartalom. Ha a tartalom változik, a címke is meg fog változni. Ez vezet az a tény, hogy a távoli ügyfelek kér egy új példányt a tartalom. Ezt a technikát nevezik cache beköltözésére.

Alkalmazott technika Sínek címkék, hogy helyezzen be egy hash-tartalom, ami általában a végén. Például, CSS global.css fájl lehet nevezni MD5 kivonat tartalma:

Ez a stratégia által fayloprovodom Rails.

Sínek Ugyanezt a stratégiát alapul hozzátéve napjától a query string minden erőforrás, csatlakozva az integrált segítő. A létrehozott forráskód így néz ki:

A stratégia alapján a query string-ben számos, hiányosságok:

  1. Nem minden cache megbízhatóan tárolt tartalmak ha a fájl neve különbözik csak a paramétereket a query string.
    Steve Souders ajánlja. „... hogy elkerüljék lekérdezés húrok cache erőforrásokat.” Azt találta, hogy ebben az esetben 5-20% -a lekérdezések nem cache. Különösen a query string nem működik egyes hálózatok tartalomszolgáltató (CDN) az érvénytelenítés a cache.
  2. A fájl neve eltérő lehet a különböző csomópontok több szerver környezetben.
    Alapértelmezésben a query string Rails 2.x alapul, amikor a fájl változik. Amikor források kerülnek a klaszter, nincs garancia arra, hogy az időbélyeg ugyanaz, különböző értékeket függően kiszolgáló fogja kezelni a vizsgálat fogja használni emiatt.
  3. Túl sok megszűnt cache
    Amikor elhelyezzük statikus erőforrások minden új kiadás a kód, a mtime ezen fájlok megváltozott, ezért az összes távoli ügyfél kap vissza, még akkor is, ha a tartalom ezen erőforrások nem változott.

Címkék kijavítani ezeket a problémákat elkerüljük a lekérdezés húrok, és biztosítják, hogy a fájl neve a tartalom alapján.

Alapértelmezésben címkék szerepelnek a termelés és letiltotta az összes többi média. Ezek engedélyezhető vagy letiltható a konfigurációban config.assets.digest opciót.