Donaldas Trumpas * iš tikrųjų * nori, kad jo veidas būtų pridėtas prie Rushmore kalno

Pagal „Yahoo“ daugybės geriausios praktikos pavyzdžių, kaip pagreitinti jūsų svetainę, mes teikiame statinį turinį iš CDN, naudodami tolimesnes talpyklos galiojimo pabaigos antraštes. Žinoma, turime retkarčiais atnaujinti šiuos „statinius“ failus, todėl šiuo metu kaip failo pavadinimo dalį pridedame infix versiją (pagal failo turinio sumą SHA1). Taigi:

styles.min.css 

Tampa:

styles.min.abcd1234.css 

Tačiau tvarkyti versijas failus gali tapti nuobodu, ir man buvo įdomu, ar GET argumentų žymėjimas gali būti švaresnis ir geresnis:

styles.min.css?v=abcd1234 

Kurį naudojate ir kodėl? Ar turėčiau atsižvelgti į su naršykle ar tarpiniu serveriu / talpykla susijusius aspektus?

  • Prašau to, kad, regis, prisimenu priežastį, kodėl NESinaudoti GET argumentų stiliumi, bet nepamenu kodėl.
  • Ar norint naudoti GET argumentą nereikia pateikti stiliaus lapo su kažkokiu serverio pusės scenarijumi (ir tai nebebūtų statinis)?
  • @Lotus: Galite siųsti GET argumentus ir jie bus tyliai ignoruojami, jei niekas jų neieškos.

Pagal „Google“ internetą „Padarykite internetą greitesnį“, puslapiai su užklausos parametrais nėra talpinami daugelyje HTTP tarpinių serverių.

Dauguma įgaliotųjų, ypač „Squid up“ per 3.0 versiją, talpina išteklius su „?“ jų URL, net jei a Cache-control: public antraštė yra atsakyme. Norėdami įgalinti tarpinių serverių talpyklą šiuose ištekliuose, pašalinkite užklausos eilutes iš nuorodų į statinius išteklius ir užkoduokite parametrus pačiuose failų pavadinimuose.

Taigi styles.min.abcd1234.css yra pageidaujamas sprendimas. Norėdami pasukti, galite naudoti tinkamą URL perrašymo mechanizmą styles.min.abcd1234.css į lengviau įgyvendinamą styles.min.css?v=abcd1234 skaidriai.

Jei palaikote tik HTTPS, šis patarimas netaikomas, nes tarpiniai serveriai paprastai negali talpinti SSL teikiamų puslapių.

  • 3 Įdomu, ar informacija apie užklausų eilutės talpyklą ir tarpinius serverius yra šiek tiek pasenusi? „Google“ dokumentai šiame kontekste nebetaiko užklausos eilučių ir tarpinių serverių. Nors pavyzdžiuose vis tiek reikia pakeisti patį failo pavadinimą. Pranešama, kad „Squid 2.7“ (2008) ir 3.1 (2010) pagal numatytuosius nustatymus palaiko užklausos eilutės talpyklą, o ankstesnės versijos gali būti sukonfigūruotos tai palaikyti.

Naudojant GET stiliaus versijas, iš tuščios talpyklos kelis URL, pvz. style.css?v=123 ir style.css?v=456 - grąžintų tą patį turinį. Tačiau nematau, kad tai būtų problemiška, ypač todėl, kad vienu metu turėtumėte susieti tik su vienu.

Manau, kad GET stilių bus daug lengviau prižiūrėti. Jums nereikia atskirų failų: tiesiog pakeiskite URL ir naršyklės iš naujo gaus CSS.

ATNAUJINTI: atlikus tolesnius tyrimus atrodo, kad naudojant užklausos eilutę naršyklės gali sustabdyti failų talpyklą. Tačiau jei grąžinate tinkamas antraštes, pvz Expires tai nėra problema.

2 ATNAUJINIMAS: priimtas atsakymas nurodo, kad kai kurie įgaliotieji ne talpina failus su užklausos eilute. Tačiau tai pagrįsta sena informacija; konkretus klausimas, kurį jie mini „Kalmaruose“, buvo išspręstas prieš 7 metus. Įspūdingi tinklai tai gerai parašė.

  • Tai įspėjimas, kurį bandžiau prisiminti. Ačiū už nuorodą.
  • Vieno būdo užklausų eilutės yra problemiškos: serveryje yra tik vienas failas, tačiau bet kuri užklausos eilutė yra skirtingas URL. Versiją naudojate, kai naudojate talpyklas, ir kadangi kiekviena nauja versija turėtų būti nekintama, naudosite ypač ilgas talpyklas. Jei naudojate atvirkštinį tarpinį serverį, kažkas (nors ir mažai tikėtina) gali užpulti jūsų serverį GET'ng dar nesukurtą versiją. Pvz. jūs turite tik style.css? v = 3, bet kažkas GAUTI style.css? v = 4. Dabar tas failas yra talpykloje atvirkštiniame tarpiniame serveryje. Kai įkeliate 4-ąją versiją, tarpinis serveris vis tiek aptarnauja trečiąją, kurią ji talpino anksčiau.
  • @OdraEncoded Kaip užklausos eilutę visada galite naudoti failo maišos variantą, tada neįmanoma atspėti, kokia bus kita versija. Arba kūrimo proceso metu pasibaigs naujos užklausos eilutės galiojimas.
  • Jei naudojate maišos, tai tikriausiai niekada neįvyks, bet matematiškai neįmanoma, o atvirkštinių tarpinių serverių talpyklų pripažinimas negaliojančiomis padidina projekto sudėtingumą. Imho, saugiausias būdas tai padaryti yra tiesiog grąžinti 404, kai prašoma neegzistuojančios versijos. Nėra jokios priežasties, kodėl naujausia serveryje saugoma versija turėtų būti grąžinta diegiant (nors galbūt tai yra prasmė kūrimo serveryje), todėl paprasčiausias sprendimas yra naudoti versijas failų pavadinimuose, o ne užklausos eilutėse.

Abi veiks vienodai gerai, nes užklausos eilutė laikoma URL dalimi ir ją pakeisdami iš tikrųjų pakeisite ištekliaus pavadinimą, todėl naršyklė gaus naują failo kopiją.

Sakau, naudokite bet kurį metodą, kurį jums lengviau išlaikyti.

dirbo už jus: Charles Robertson | Norite su mumis susisiekti?