Autor Zpráva
Venca190
Profil *
Zdravím,
dělám na svém webu a bohužel jakmile provedu nějakou změnu jak v CSS nebo PHP apod tak trvá než se aktualizuje, můžu klikat klidně minutu na ctrl+F5 a nic se nestane, třeba až za 2-3 min se změna projeví. Někdy se stane, že změna se projeví hned. V prohlížeči jsem si zakázal cachování.

I v indexu.php mám
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

.htaccess
<IfModule mod_expires.c>
ExpiresActive Off
ExpiresDefault A600
ExpiresByType text/javascript A31536000
ExpiresByType application/javascript A31536000
ExpiresByType text/css A1209600
ExpiresByType image/gif A1209600
ExpiresByType image/png A1209600
ExpiresByType image/jpeg A1209600
ExpiresByType image/x-icon A1209600
ExpiresByType text/html A1
</IfModule>

web mám hostovaný u forpsi, na jiných webech, které jsou u jiné společnosti, problém nemám, víte někdo co s tím?
Str4wberry
Profil
Rozumný postup bývá cacheování nebránit a načtení aktuálních souborů docílit změnou URL.

Třeba na této diskusi se to dělá přidáním parametru:

<link href="./templates/djpw.css?v=2.2.6" type="text/css" rel="stylesheet">
Venca190
Profil *
Str4wberry:
Díky, takže jen za můj styl se přidá např. "?v=1.0" a nic jiného se neřeší? nemusí to být nidke definované a je to tak správné?
Sitole
Profil
Venca190:
Já jsem to dělal tak, že jsem si místo ?v=2.2.6 vypisoval například PHP time. Takže se každém novém otevření soubor načetl znovu. Aktuálně to mám vyřešené stejně jako tu a to přidáním verze systému. :)
Bubák
Profil
Sitole:
Aktuálně to mám vyřešené stejně jako tu a to přidáním verze systému.
Ale ty stahuješ "novou verzi" i tehdy, pokud to není potřeba, kdežto v případě Str4wberryho rady se soubor aktualizuje jen tehdy jen tehdy, pokud je to ručně vynuceno změnou čísla verze souboru.
Venca190
Profil *
Takže pokud to chápu dobře. tak vždy, když změním verzi, měla by se mi aktualizace provést hned(když vygeneruju náhodný číslo rand(), tak pokaždé co dám F5 se načte znovu styly). Jak se to, ale řeší se souborama? Např. když potřebuju měnit nějakou php funkci apod.
Sitole
Profil
Bubák:
Myslel jsem to tak, že když jsem stránky dělal tak jsem potřeboval okamžitou reakci, ale stránku jsem musel 2-3x načíst, aby se opět načetl soubor s CSS. Tak jsem to vyřešil pomocí toho time. Aktuálně je za ?v= verze administračního systému.
Str4wberry
Profil
Vynutit nové stažení nemusí být vždycky nutné. Nejedná-li se o opravu nějaké chyby nebo s novým stylem nepočítá HTML kód, nic moc se nestane, když se některým návštěvníkům zobrazí stará podoba.

Jinak pro testování je spíš lepší zakázat cache než se snažit o změny URL. Jde to ve vývojářských nástrojích:



Další možnost je využít načtení bez obnovení zkratkou Ctrl + Shift + R. To funguje ve Firefoxu a Chrome.
Chamurappi
Profil
Reaguji na Bubáka:
kdežto v případě Str4wberryho rady se soubor aktualizuje jen tehdy, pokud je to ručně vynuceno změnou čísla verze souboru
Ono je to spíš jakési číslo verze DJPW. Tuším, že se tu používá jen na třech místech – v adrese CSS, v adrese JS a viditelně v patičce stránky. Takže to není jen číslo verze souboru, je to vlastně číslo dvou souborů, jehož setinkovou část uměle navyšujeme jen proto, abychom přebili keš, pokud je to nutné.


Reaguji na Str4wberryho:
Nefunguje všude (ve Windows, možná mimo Operu) už desítky let Ctrl + F5? Myslím, že to je mnohem známější zkratka. Slyšel jsem lidi říkat „dej si Ctrl + F5“ i u dotykového telefonu :-)
Teď koukám, že vlastně Venca190 o téhle zkratce mluví v úvodním příspěvku. Tak nic :-)
Str4wberry
Profil
Tu zkratku Ctrl + Shift + R zmiňuje třeba Chrome při podržení obnovovacího tlačítka s otevřenými vývojářskými nástroji:



U Ctrl + F5 je vtipná situace ve staré Opeře 12, kde tato zkratka refreshne všechny otevřené stránky. :–)
Tomáš123
Profil
Str4wberry:
Třeba na této diskusi se to dělá přidáním parametru:
Chápem správne, že ten parameter nijak neprepína verzie, nikde sa nevyhodnocuje a jeho jedinou úlohou je iba pozmeniť URL?
anonymníí
Profil *
Tomáš123:
99 %* všech parametrů u JS/CSS/obrázkových souborů napříč internetem nemá žádný jiný důvod, než jen vynutit aktualizaci cache. A je jedno, jestli je označen verzí, timestampem v době nasazení, nebo náhodným spletencem. U DJPW to bude téměř jistě stejně, žádný speciální význam ten parametr mít nebude.

*hm, 99 %... nazvěme to spíše mnoho, to bude přesnější :-)
Str4wberry
Profil
Je to tak. Některé weby mění přímo název souboru (dřív byla docela rozšířená taková teorie, že některé proxy servery mohou mít problém s kešováním dynamických URL), ale to může být náročnější na implementaci.

Při přidávání parametru stačí někde přepsat proměnnou/konstantu s versí, která se vypisuje za připojením CSS/JS:

<link href="./templates/djpw.css?v={$GLOBALS['version']}" type="text/css" rel="stylesheet">
…
<script src="./templates/djpw.js?v={$GLOBALS['version']}" charset="utf-8" type="text/javascript"></script>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: