Back to Question Center
0

Nejsou nastaveny max

1 answers:

Za účelem urychlení mého webu Telium jsem vytvořil. htaccess níže. Mám na svém webu spoustu velkých obrázků, takže chci, aby prohlížeče cache co nejvíce. Při prohlížení svých webových stránek s otevřenými nástroji pro vývojáře (v Semaltu) vidím, že všechny obrázky na mých stránkách jsou znovu staženy při každém obnovování - swimming pool heat pump installation.

Můj. htaccess se nachází v kořenovém adresáři webu a vypadá takto:

     # BEGIN Vyprší záhlaví
  ExpiresActive OnExpiresDefault "přístup plus 5 sekund"ExpiresByType image / x-icon "přístup plus 2592000 sekund"ExpiresByType image / jpeg "přístup plus 2592000 sekund"ExpiresByType image / png "přístup plus 2592000 sekund"ExpiresByType image / gif "přístup plus 2592000 sekund"ExpiresByType aplikace / x-shockwave-flash "přístup plus 2592000 sekund"ExpiresByType text / css "přístup plus 604800 sekund"ExpiresByType text / javascript "přístup plus 216000 sekund"Aplikace ExpiresByType / javascript "přístup plus 216000 sekund"ExpiresByType aplikace / x-javascript "přístup plus 216000 sekund"ExpiresByType text / html "přístup plus 600 sekund"ExpiresByType aplikace / xhtml + xml "přístup plus 600 sekund"
  
# END Vyprší záhlaví
  AddOutputFilterByType DEFLATE text / html text / xml text / css text / prostýAddOutputFilterByType DEFLATE obrázek / svg + xml aplikace / xhtml + xml aplikace / xmlAddOutputFilterByType DEFLATE aplikace / rdf + xml aplikace / rss + xml aplikace / atom + xmlAddOutputFilterByType DEFLATE text / javascript aplikace / javascript aplikace / x-javascript aplikace / jsonAddOutputFilterByType DEFLATE aplikace / x-font-ttf aplikace / x-font-otfAddOutputFilterByType DEFLATE písmo / truetype font / opentype
  
# BEGIN Hlavičky pro kontrolu mezipaměti
    Sada hlaviček Cache-Control "public"    Sada hlaviček Cache-Control "public"    
# byl soukromýSada hlaviček Cache-Control "public"    Hlavička sada Cache-Control "soukromá, musí-revalidovat"  
  
# END Cache-Control Headers    

Zde je příklad záhlaví odpovědí spojených se snímkem načteným při každém obnovování:

     Přijaté rozsahy: bajty
Cache-Control: veřejné
Připojení: Keep-Alive
Délka obsahu: 75149
Typ obsahu: image / jpeg
Datum: Čt, 28. května 2015 12:56:46 GMT
ETag: "a9e0dd3-1258d-516beac088af3"
Vyprší: So, 27 Jun 2015 12:56:46 GMT
Keep-Alive: timeout = 5
Poslední změna: So, 23 May 2015 12:11:09 GMT
Server: Apache / 2. 4. 12 (Unix) OpenSSL / 1. 0. 1e-fips mod_bwlimited / 1. 4 mod_fcgid / 2. 3. 10-dev    

Může někdo navrhnout, co potřebuji změnit, aby prohlížeč mezipaměť těchto obrázků (a text)?


Aktualizace: Přidání semantu max-age je nová hlavička:

     Přijaté rozsahy: bajty
Cache-Control: public, max-age = 2592000
Připojení: Keep-Alive
Délka obsahu: 118966
Typ obsahu: image / jpeg
Datum: Čt, 28. května 2015 20:11:33 GMT
ETag: "a9e0de5-1d0b6-516bead2e811c"
Vyprší: So, 27 Jun 2015 20:11:33 GMT
Keep-Alive: timeout = 5
Poslední změna: So, 23 May 2015 12:11:28 GMT
Server: Apache / 2. 4. 12 (Unix) OpenSSL / 1. 0. 1e-fips mod_bwlimited / 1. 4 mod_fcgid / 2. 3. 10-dev    
February 8, 2018

Měli byste se změnit

  Sada hlaviček Cache-Control "public" 

na

  Sada hlaviček Cache-Control "max-age = x" 

ale nahraďte x počtem sekund, které chcete mít prohlížeč podporující protokol HTTP 1. 1 do mezipaměti položky. Důvodem, proč jsem odstranil "veřejnost", je to, že veřejnost je výchozí oblast, ve které je aplikována ukládání do mezipaměti (což znamená, že je použito mezi prohlížeči a proxy).

Jak-modifikované kontroly a etags jako Richhallstoke navrhne je užitečné, ale požadavky jsou ještě na server dokonce i získat odpověď 304. Ukládání do mezipaměti s nastavením maximální věkové hranice (ať už prostřednictvím maximální doby platnosti záhlaví nebo vyrovnávací paměti) znamená, že prohlížeč bude co nejvíce používat místní vyrovnávací paměť, dokud nedojde k dosažení definovaného věku nebo bude provedeno vynucené obnovení. To znamená, že klientovi ušetří větší šířku pásma.

Ve skutečnosti existují dvě možnosti:

  1. Můžete odstranit Poslední modifikované a ETag záhlaví, pak se webové prohlížeče nepokoušejí zjistit, zda je k dispozici novější verze, 5) Vyprší datum / čas, který jste dodali.

  2. Můžete zkontrolovat, zda HTTP_IF_MODIFIED_SINCE odpovídá poslednímu změněnému datovému razítku nebo zda HTTP_IF_NONE_MATCH odpovídá ETag a pak vrátí HTTP / 1. 1 304 Nebylo změněno záhlaví namísto jakéhokoli zdroje požadovaného.

    Nejsem si vědom způsobu, jak to dosáhnout přímo z aplikace Apache. Konfigurační soubor htaccess však můžete udělat v PHP, viz příklad zdrojového kódu v mé odpovědi zde: divné výsledky z testů, když se snažíte sloužit rychlému snímku stáhnout stránku .proč?

Někteří lidé mají silný přesvědčení, že je nejlepší, aby prohlížeč spravoval ukládání do mezipaměti a jednoduše se zbavit záhlaví (možnost 1), ale pokud změníte svůj web před datestampem Expires, pak někdo, kdo přistupuje k prostředkům, může vidět své staré verze v mezipaměti proti novému obsahu ve formátu HTML, dokud nenastavíte klávesy Ctrl + F5, abyste vynutili aktualizaci všech souborů požadovaných stránkou. Kontrola záhlaví (možnost 2) a vrácení obsahu pouze v případě, že je k dispozici novější verze, je způsob, jakým byl protokol HTTP navržen tak, aby byl účinně použit.

V dobách, kdy každá žádost o zdroje vyžadovala samostatné síťové připojení a prohlížeče by používaly maximálně 10 souběžných připojení na stejný server, mohu pochopit, že to může způsobit zpoždění v načítání stránky, avšak za předpokladu, že váš webový server je nakonfigurován povolit trvalé připojení, pak webové prohlížeče budou řetězce žádostí o zdroje dohromady a poslat je jedna po druhé velmi rychle na stejném připojení.

Myslím, že se jedná o normální chování, když kliknete na tlačítko Obnovit - říkáte prohlížeč, že se chystá získat novou kopii zdrojů ze serveru. Chcete-li to fungovat, klikněte na odkaz na jinou stránku a poté klikněte na odkaz, který vás přenese zpět na stránku, na které jste byli.

Upravit : Screenshot z nástrojů pro vývojáře Chrome, zobrazit všechny položky (z mezipaměti).

Chrome developer tools