Hvad gør YouTube med din video, når du har uploadet den?

Tilståelse: websteder, jeg vedligeholder, har forskellige regler for cache-kontrol hovedsagelig baseret på standardkonfigurationen af ​​serveren, fulgt op med anbefalinger fra Page Speed ​​& Y-Slow Firefox-plug-ins og netværksressourcer i Googles Speed ​​Tracer. Cache-Control er indstillet til privat / offentligt afhængigt af hvad de siger at gøre, ETags / sidst modificerede overskrifter er kun tinkered, hvis Y-Slow antyder, at der er noget galt, og Vary-Accept-Encoding synes nødvendigt, når manuelt gzip-filer til Amazon CloudFront.

Når man læser igennem materialet om de forskellige muligheder, og hvad de gør, synes der at være modstridende oplysninger, regler for brudte fuldmagter og konfigurationer af lastkult. Enhver af de officielle oplysninger leveret af ovennævnte analyseværktøjer er ret utilgængelige, da de behandler hvert emne individuelt i stedet for som en samlet strategi (så der er ingen krydshenvisning til teknikker).

For eksempel ser det ud til at ikke give mening, at hastighedsanalyseværktøjerne vurderer et websted med ETag er det samme som et websted uden dem, hvis de er beregnet til at hjælpe med caching.

Hvad er de hårde og hurtige regler for en platform agnostisk Cache Control-strategi?

REDIGERE:

Et link gennem Jeff Atwoods artikel forklarer Caching i fremragende dybde.

For ordens skyld er her dog de hårde og hurtige regler:

Hvis filen komprimeres ved hjælp af GZIP osv - brug "cache-kontrol: privat" som en proxy kan returnere den komprimerede version til en klient, der ikke understøtter den (browserens cache vil dog indeholde filer markeret på denne måde). Husk også at medtage en "Vary: Accept-Encoding" for at sige, at den er komprimerbar.

Brug sidst modificeret i forbindelse med ETag - brug af bælter og seler giver begge validatorer, mens ETag er baseret på filindhold i stedet for ændringstid alene, idet begge dækker alle baser. BEMÆRK: AOLs PageTest har en eller anden grund en carte blanche-tilgang mod ETags. Hvis du bruger Apache på mere end en server til at være vært for det samme indhold, skal du fjerne den implicit erklærede inode fra ETags ved at ekskludere den fra FileETag-direktivet (dvs. "FileETag MTime Size"), medmindre du virkelig bruger det samme live filsystem.

Brug "cache-control: public" hvor som helst du kan - dette betyder, at proxyservere (og browserens cache) returnerer dit indhold, selvom resten af ​​siden har brug for HTTP-godkendelse osv.

Først skal du ikke slippe af med ETag, som Yahoo siger, medmindre du bruger en serverfarm / klynge. Så længe den samme fil altid returnerer den samme ETag, når den ikke har ændret sig, så er det et meget nyttigt direktiv.

Hvad angår andre overskrifter, antyder Yahoos bedste praksis at sætte en langt fremtid Expires header til statiske filer, brug Cache-Control til dynamisk indhold. Imidlertid Cache-control er helt fint for statisk indhold (stort set ingen forskel mellem dem).

Når du ændrer cachelagrede statiske filer, skal du ændre filnavnet eller tilføje en unik parameter til slutningen, f.eks. example.com/styles.css?v=2. Ændring af det faktiske filnavn foretrækkes dog som bemærket i kommentarerne nedenfor.

I øvrigt kan du redigere YSlow-reglerne efter din smag for at fjerne Etag-reglen og tilføje dit eget domæne som et CDN. Denne artikel er også en god læsning: Yahoos problemer er ikke dine problemer

  • ETag-en gav mening i Apache ved at udføre "FileETag MTime Size" i stedet for standardindstillingen, der inkluderer inoden (pr. FS så ikke-pålidelig) på Y-Slow. Anbefalingerne om Yahoos bedste praksis er dog lidt forvirrende sammenlignet med Page Speed's. For eksempel siger det at kun bruge Cache-Control på dynamiske sider (som du også foreslår), men alligevel foreslår Google at bruge Cache-Control: offentlig på statisk CSS og Cache-Control: privat på manuelt GZipped Amazon Cloudfront-filer.
  • Det er svært at vide, hvad man skal gøre med det råd til fuldmagter. Google siger bare "Nogle offentlige fuldmagter har fejl ..." men det siger ikke, hvor udbredt dette er. Det frarådes at indstille overskriften Vary: Accept-Encoding, se bunden af ​​code.google.com/speed/page-speed/docs/caching.html
  • Tilføjelse af en forespørgselsparameter deaktiverer caching af denne fil fuldstændigt i nogle browsere. Så du vil måske gå med fremgangsmåden "skift filnavn" i stedet, ligesom example.com/style_v2.css
  • @Evgeny: Hvilke browsere? Jeg har hørt dette før, men jeg har aldrig set en browser, der faktisk ikke cachelagrer filen (især hvis du har de rigtige overskrifter).
  • @DisgruntledGoat faktisk efter nogle grave synes det at være en relikvie fra http / 1.0 æraen, hvor det var en del af spec, at faktisk sagde brugeragent ikke må cache aktiver, der har forespørgselsstrenge. På den anden side angiver code.google.com/speed/page-speed/docs/caching.html, at det er fuldmagterne (blæksprutte <3.0), der ikke cache aktiver, og derfor frarådes brug af forespørgselsstrenge til cache-afbrydelse.

Skift anmodningsoverskrifter for dine ressourcer for at bruge cache For de fleste er vejen til ebabel caching at tilføje noget kode til en fil kaldet .htaccess på din webhost / server.

Dette betyder at gå til filadministratoren (eller hvor end du går for at tilføje eller uploade filer) på din webhost.

.Htaccess-filen styrer mange vigtige ting for dit websted. Hvis du ikke er bekendt med .htaccess-filen, skal du læse min artikel om .htaccess for at få noget at vide, før du ændrer den.

Koden nedenfor fortæller browsere, hvad de skal cache, og hvor længe de skal "huskes". Det skal tilføjes øverst i din .htaccess-fil.

## EXPIRES CACHING ##  ExpiresActive On ExpiresByType image/jpg 'access 1 year' ExpiresByType image/jpeg 'access 1 year' ExpiresByType image/gif 'access 1 year' ExpiresByType image/png 'access 1 year' ExpiresByType text/css 'access 1 month' ExpiresByType text/html 'access 1 month' ExpiresByType application/pdf 'access 1 month' ExpiresByType text/x-javascript 'access 1 month' ExpiresByType application/x-shockwave-flash 'access 1 month' ExpiresByType image/x-icon 'access 1 year' ExpiresDefault 'access 1 month'  ## EXPIRES CACHING ## 

Gem .htaccess-filen, og opdater derefter din webside.

Kilde:
https://varvy.com/pagespeed/leverage-browser-caching.html

  • Næsten alle eksempler på ExpiresByType direktiver jeg ser inkluderer mime-typen text/x-javascript - svarer din server virkelig med denne indholdstype ?! (Et eksempel på blind kopi / indsættelse af IMO.)

arbejdet for dig: Charles Robertson | Ønsker du at kontakte os?