Webböngésző cache kiiktatás web fejlesztéshez

 ( dii | 2018. április 10., kedd - 23:53 )

Sziasztok,

a probléma elég triviálisnak tűnik, de lassan a megőrülés határára kerget. Nem szoktam weboldalakat csinálni, csak egy-egy hobbi projekthez nagyritkán. Korábban (4-5 hónapja) ez a probléma nem volt, ugyanezekkel a metódusokkal. Adott egy up-to-date archlinux, rajta három böngészővel (chrome, opera, firefox). A probléma elég szokványos: feltöltöm a CSS vagy egyéb fájl változásokat a szerverre és a böngészőben nem változik semmi. Ezzel teli van az internet, de egyik népi gyógymód sem működött:

- webhosting oldalon ki van kapcsolva a cache
--- curl-al mindig a legújabb példányt kapom mindenből
- chromera és firefoxra is keresetem cache ürítő appot, nem változik semmi
- chrome developer mode -> no cache beállítás nem javítja meg a helyzetet
- a weboldal vér egyszerű, egy CSS és egy index.php jelen pillanatban, kb három DIVel, szóval ott nagy dolog nem lehet
- proxy nincs

És ami igazán rejtélyes, valamit gondol a böngésző és 10-20-30 percig tök rendben működik, aztán egyszercsak többé nem frissít. Átmegyek más böngészőre, ott is megy egy kicsit, aztán nem. Ki be kapcsolom a böngészőket hol jó hol nem jó. Ami végképpen érthetetlenné teszi a dolgot, hogy a böngészők párhuzamosan hajlandóak más dolgot nem frissíteni, pl volt olyan hogy képet változtattam + css fájlt, a chrome-ban a css nem frissült de a kép igen, míg a firefoxban azzal párhuzamosan a kép nem akart lecserélődni, míg a CSS ment. Mindeközben a curl-al pedig mindig mindenből az aktuálisat kapom, tehát nem gondolnám szerver oldalinak.

Valami epikus balfékséget követtem el biztos, de kifogytam az ötletekből. Valaki van valami jó tippje?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Gondolataim
- szedd le a Firefox Quantum Developer Edition-t, az erre van
- az oldaladat Privát módban nyissad meg
- az oldaladat ne F5, hanem Ctrl+F5 komboval (force reload) frissitsed

Az hogy proxy nincs, az egy dolog.
De milyen webszerver szolgálja ki a statikus fájlokat?
Ha indián, ahhoz nem értek, de ha nginx, akkor ott simán lehet valami gond a cache kezeléssel illetve maga az nginx amúgy is elég agresszívan cacheel.

-------------------------
Roses are red
Violets are blue
Unexpected '}' on line 32

Köszi a quantum developer edition-t megnézem.

Kihagytam a listából, hogy privát mód, F5, CTRL+F5 nagyon F5, normal reload, hard reload, empty cache and hard reload nem segített.

A szerver oldalról sokat nem tudok, mert azt nem én üzemeltetem, szerintem apache. A web configurátorában van opció a cache kikapcsolására, remélem nem az tréfált meg.

A Firefox Quantum Developer Edition úgy tűnik megoldotta a problémát. Ezidág ezt a jószágot nem ismertem.

Ezer hála!

Erre szoktak par trukkot alkalmazni a server oldalra is, mivel statikus tartalomrol beszelsz ezert ha jol sejtem ezt .htaccess-bol tudod megtenni:
-pragma: no-cache, must-revalidate
-Expiration date 1970-01-01 00:00:00

es vegul ha semmi nem hasznal, akkor csinald meg hogy ahol importalod a fileokat, ott adsz neki egy timestampet http get parameterkent:
https://foo.bar.hu/baz.css?time={... epoch ...}
Mivel igy a webszerver a cachelesi resznel meg nem tudja hogy a tartalom statikus vagy dinalikus, ezert mindenkeppenujat fogn neked kiszolgalni. Ez a bongeszo cache ellen is mukodik, mivel a bongeszo sincs tisztaban azzal hogy az a konkret file statikus vagy dinamikus, ezert a megvaltozott parameterek miatt mindenkeppen ujra le fogja kerni.

Edit, csak ha kesz vagy a fejlesztessel akkor szedd ki eszeket, mert nagyon megkeserited vele a kiszolgalokornyezet dolgat nagy latogato szam eseten!

Az a trükk már nem működik, hogy az URL végére csempészek egy ?-t?
Régebben az volt a "pletyka", hogy ebben az esetben kihagyja a cache-t, mert dinamikus tartalomra számít a böngésző.
Igaz, azt nem tudom, ez az oldalba ágyazott objektumokra is érvényes volt-e... (pl. képekre)

Profilkep frissitesenel hasznaltam olyan cselt, hogy az URL vegehez hozzaadtam egy "?_timestamp_" kiegeszitest, igy elkerulendo, hogy ne a regi cache-elt kepet mutassa. Ugyhogy, szerintem, azokra is ervenyes volt.
Mondjuk nem tudom, mennyire helyes megoldas...


Sic Transit Gloria Mundi

Tetszeni nekem sem tetszik ez a megoldás, viszont működik. Azt szoktuk csinálni a munkahelyemen, hogy a kliensoldali JS komponenseket az alkalmazásverzióval posztfixeljük, pl. https://.../main.js?v=${application.version}, így ha új verzió van, akkor biztosan agyoncsapjuk a régi verziókat a gyorsítótárban.

tudom, hogy nem valasz az eredeti kerdesre de ajanlom h nezd meg a browsersync nevu cuccot, kicsit kenyelmesebb igy frontendet fejleszteni, mint nyomkodni az F5-t

Köszönöm a további tippeket. Végül a developer edition firefox sem segített, viszont átraktam a cuccokat egy másik szolgáltatónál tárolt régi tárhelyre, ahol minden úgy működik ahogy kell, így most tudom folytatni a CSS lottó tevékenységemet :)
Szóbal végső soron mégis a szolgáltató oldalán volt valami, hiába kapcsoltam ki a cache funkciókat. A .htaccess és a timestampes trükköt elraktározom magamnak.

F12->networkfül->disbale cache pipa és akkor nem használ cachet amíg a developer toolbar meg van nyitva. Ez chromeban és FF-ben is működik.

+1

Firefox-ban: Ctrl+Shift+R : ez garantáltan mindent újrakér a szerverről

Chrome-ban fejlesztek elsődlegesen, és közben mindig Ctrl-Shift-R-rel frissítek. Nincs böngésző cache.