ugrás a tartalomhoz

IE cache-eles megakadalyozasa

zamek · 2007. Feb. 15. (Cs), 16.20
Hello,

Szeretnem hasznalni az FCKEditor upload funkciojat. Firefox alatt tokeletesen mukodik is, ellenben ez a k....a IE a feltoltes utan nem frissiti a directory tartalmat. Az a baja, hogy az elozoleg xml-ben lekuldott directory tartalmat cache-eli. A javascript az upload utan szeretne frissiteni a directory-t, de ez a b...i rogton visszaloki a cache-bol az upload elotti tartalmat. Az xml lekuldesekor a kovetkezo header flageket allitom:

response.addHeader("Expires","Thu, 19 Nov 1981 08:52:00 GMT");
response.addHeader("Cache-Control", "private");
response.addHeader("Cache-Control","no-store, no-cache, must-revalidate");
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
response.addHeader("Pragma", "no-cache");
response.addHeader("Keep-Alive", "timeout=15, max=99");
response.addHeader("Connection", "Keep-Alive");

Ezt onnan szedtem, hogy ngrep-pel monitoroztam az fckeditor.net demojat.
Sokat segitett, de meg mindig nem eleg, van olyan IE7 amely jol mukodik es van egy ugyanolyan verzioju, ami nem :(

nincs valami biztos modszer ehhez a szornyu ganyhoz, amivel ra lehetne szedni, hogy torolje a cache-t?

a ... egy vaskos karomkodast jelol, amellyel az IE szabvanyos voltat minositem.

koszi,
 
1

IE caching issues

vbence · 2007. Feb. 15. (Cs), 17.50
Az ie cache hibáit úgy szokták megoldani, hogy egy mindig változó, értelmetlen paramétert fűznek az urlhez, így biztos nem egyezik a cache-elt url-el pl:
directory.php?dir=valami&time=1232132132132
esetünkben az aktuális timestamp. Biztos nem lesz kétszer ugynaz.

Aztán itt azt írják, hogy a POST kéréseket nem cache-eli az explórer, úgyhogy elég a GET helyett így kérni le a listát.
2

Solved

zamek · 2007. Feb. 16. (P), 11.15
hello,

Ez tenyleg segitett :). Azert elkepeszto, hogy egy ilyen aljas szuperganyt ilyen modszerekkel lehet csak szabvanyos mukodesre birni :(

Azert stilszeruen a dummy parametert igy csinaltam:

sUrl += '&stupidie=' + new Date().getTime();

abcug M$

koszi
3

IE + POST

vbence · 2007. Feb. 16. (P), 12.20
Azért ne légy olyan kemény velük :) Végülis ők találták ki az XMLHTTP-t...

A POST-os megoldás nem volt szimpatikusabb?
4

M$ == DEVIL

zamek · 2007. Feb. 16. (P), 12.43
Minden ami m$ az ordogtol valo es ezt nagyon komolyan mondom!

Azt hiszem valamelyik fo linux-ostol szarmazik az a mondas, hogy
"Nem allitom, hogy Bill Gates maga az ordog, de ha talalkoznanak, nem lenne szukseg tolmacsra"

Mivel lehet megmagyarazni azt, hogy a szabvany szerint van jo par metodus a cache tiltasara, megis ez a rohadt szupergany verziofuggoen lehanyja?

A post-os megoldas jo lett volna, de ez az FCKEditor, tehat minel kevesebbet akarok patch-elni rajta. Olyannyira, hogy elkuldtem nekik a modositast, hatha bekerul a kodba, akkor nem kell minden frissites utan patch-elgetni.
5

...

Rici · 2007. Feb. 16. (P), 15.55
Gratulálok a meglátásaidhoz.

Mint a szabványok legfőbb szakértője, mindenesetre utánanézhetnél, hogy mit jelent pl. a Cache-Control: private http header.
7

Koszonom a gratulaciot :)

zamek · 2007. Feb. 17. (Szo), 16.20
>Mint a szabványok legfőbb szakértője,
>mindenesetre utánanézhetnél, hogy mit jelent
>pl. a Cache-Control: private http header.

Kb. 2 hete kuzdottem ezzel a problemaval, mivel nem tudtam mire velni a jelenseget es az FCKEditor-ban probaltam keresgelni. Csak miutan elkezdtem vizsgalni mi a kulonbseg az FCKEditor demo es az en valaszom kozott derult ki a problema jellege. En is csodalkoztam miket kuldozget az FCKEditor demo, de ezek szerint igy lett jo. Aztan kiderult, hogy nemely IE-nek megsem. Tehat, nem csak en nem tudtam hogy kell befolyasolni ezt a retket. Egyaltalan minek a cache control, ha a no-cache egy dummy garantaltan kulonbozo parameterrel valosithato csak meg? Erdekes modon a Firefoxnak a no-cache _tokeletesen_ eleg. Miert van az, hogy nem csak itt, hanem mas programozasban is csak a szopas van a M$ szoftvereivel? Miert van az, hogy az egyes verziok nem konzekvensek es _mindig_ a m$-ral kell szivni? Olvasd el a nagy hatalmas m$ leirasat a cache kezelesrol! "A cache kezeles kivulrol befolyasolhato, de: ha ..., ha...". Mintha egy adotorvenyt olvasnek, csak kivetelek vannak. :(. En programozom es hasznalom is a Windowst is es Linux-ot is egyarant. Lehet, hogy a jozan paraszti eszem nem foghatja fel ennek a kifinomult "biztonsagi hezagnak" a disztingvalt mukodeset? Tapasztalatbol mondhatom, amit mondtam es fenn is tartom.

Reszemrol a vitat befejeztem, koszonom a segitseget, sajnalom, ha megbantottam a windows fan-ok legbelso erzeseit.
8

Félreérted

Rici · 2007. Feb. 18. (V), 00.54
A hozzászólásom a szabványra vonatkozott, nem annak valamelyik többé-kevésbé sikeres/sikertelen megvalósítására. (Értsd: teljesen független az Internet Explorertől).

A félreértések elkerülése végett: a Cache-Control: private azt jelenti, hogy a böngésző cache-elheti az oldalt, de olyan cache, amihez többen csatlakoznak (pl. proxy szerver), az már nem.

Ha kiküldesz egy ilyen headert, plusz még egy olyat, hogy mégsem lenne szabad cachelni, akkor miért vársz el akár ilyen, akár olyan irányban helyes működést?

Szerintem próbáld ki a private header nélkül. Természetesen én nem garantálok semmit, pl. azt sem, hogy működni fog IE-ben, mert mint tudjuk, vannak benne furcsaságok. De ha már ilyen sokat szívtál vele, akkor szerintem egy próbát megér, hogy mit csinál akkor, ha értelmes headereket küldesz.
9

Te is :)

zamek · 2007. Feb. 18. (V), 01.23
En ugy kezdtem, ahogy a szabvany szerint kellene:

response.addHeader("Pragma", "no-cache");
response.addHeader("Expires","Thu, 19 Nov 1981 08:52:00 GMT"); volt -1 is

Aztan amikor nem mukodott, megneztem az fckeditor demojat. Ott talaltam ezt a mintat. Azert irtam, hogy csodalkoztam, hogy ok igy csinaljak, de hatha, biztos tobb ie-t lattak mint en. Erdekes modon a szabvanyos beallitasokat minden altalam probalt ie lehanyta. (Win2k ie6.0.2800, xp ie6.0.2900, xp ie7). A "talalt" mintaval a win2k megvaltozott es volt egy ie7 ami jol csinalta es egy ami nem (azonos verzioszam mellett!). Itt szakadt el a cerna es akadtam ki, szerintem jogosan. Persze ez nem egyszeru html, hanem xml es biztos van benne valami "csoda" a M$-nak.
Megjegyzem, ez szinte "szabvanyos" viselkedesminta a M$ szofverszeru termekeinel es ez kiborit, mert rengeteg ido/penz/energia/agysejt megy el foloslegesen.

Kiprobalhatnam a private nelkul, de a stupidie=datum parameter tokeletesen mukodik es remelhetoleg a kovetkezo verziokban sem fogjak elrontani:)
A masik ok, hogy miutan mukodott azonnali hatallyal ledorgoltem a windozert (xp+win2k) a laptoprol amin probaltam es feltettem ra egy ubuntut.
Be kell vallanom ez _nagyon_ jol esett. :)

abcug M$
10

Az lehet

Rici · 2007. Feb. 18. (V), 02.37
Lehet, hogy így kezdted, azonban nem vagyok gondolatolvasó, így csak arra hagyatkozhattam, amit eddig ide elküldtél.

Ez a két header már logikusabbnak tűnhet.

Azért idéznék a szabványból:
Note: because the meaning of "Pragma: no-cache as a response
header field is not actually specified, it does not provide a
reliable replacement for "Cache-Control: no-cache" in a response

Tehát még nem ártana kiegészíteni egy Cache-Control: no-cache headerrel is, pl. a szabványosság kedvéért.

Persze az Expires elvileg elég kéne, hogy legyen.

Egyébként az alábbi kombinációt ajánlom, ha esetleg még később foglalkoznál a témával:

Cache-Control: no-cache
Pragma: no-cache
Expires: -1


Eddig szándékosan kerültem, hogy a hangulatkeltésedre reagáljak, de most szeretném felhívni a figyelmedet, hogy eddigi tapasztalataim szerint ez nem az a fórum, ahol menőnek/szakértőnek/elismertnek/faszagyereknek látszhatsz azért, mert ész nélkül fikázol akármit is. Szóval felesleges.
11

ahhoz mar tul oreg vagyok

zamek · 2007. Feb. 18. (V), 10.20
hogy menőnek/szakértőnek/elismertnek/faszagyereknek szeretnek latszani. Mindosszesen mondjuk az elkeseredesemnek adtam hangot, amikor szidtam/szidom a m$=t. Eddig _minden_ alkalommal amikor M$ barmelyik szemetere kellett programoznom - marpedig az msdos 2.0-nal kezdodott - volt valami inkorrekt nem szabvanyos, nem logikus idiotasag. A mostani peldaul azert volt idegesito, mert a megrendelo kerek perec kijelentette, hogy ie az istencsaszarkiraly, azzal kell megoldani es nincs atvetel, amig az ie-jen nem mukodik. El tudod kepzelni milyen erzes, amikor a tesztgepeden win2k ie6 mukodik, aztan nala xp ie6 nem?
Es ezt mar tobbszor mas esetben nem csak web alatt megertem es mindig valami kis apro hulyeseg, ami a win atveresen alapult. Nem egy ilyen volt mar.

Szoval nem akarok meno lenni, de akkor is abcug m$.
12

kis kiegészítés

Hodicska Gergely · 2007. Feb. 18. (V), 13.00
Tehát még nem ártana kiegészíteni egy Cache-Control: no-cache headerrel is, pl. a szabványosság kedvéért.
Ez nem igazán szabványosság kérdése, az egyik HTTP 1.0 a másik HTTP 1.1.


Üdv,
Felhő
13

igen, de

Rici · 2007. Feb. 18. (V), 14.20
Ez így van, viszont a Pragma a HTTP/1.0 -ban arra szolgált, hogy a _kliens_ küldje ki a kérésben Pragma: no-cache headert, arra utasítva az esetleg útközben lévő proxyt, hogy ne cache-elt változatot adjon. Nem pedig arra, hogy a szerver küldje ki ezt a headert a válaszban.

Tehát gyakorlatilag a szerver válaszában a Pragma header nem igazán értelmezhető, értsd a szabvány szerint nincs jelentése se 1.0-ban, se 1.1-ben, ha a szerver küldi. Ezért van 1.1-ben a Cache-Control header, amit már a szerver küld.

Ezért nem igaz, hogy ugyanaz lenne a jelentés annyi különbséggel, hogy az egyik 1.0, a másik meg 1.1.

A HTTP/1.1 szabvány is ezért írja, hogy "as a _response header_ field is not actually specified", én is ezért írtam, hogy a szabványosság kedvéért érdemes használni a Cache-Control headert.


Elnézést mindenkitől, ha úgy tűnik, hogy szeretek kötekedni apróságokon, de ezek talán nem is olyan aprósások: láthattuk, hogy mennyi gond ered az ilyen dolgok értelmezéséből.
14

megfogalmazás

Hodicska Gergely · 2007. Feb. 18. (V), 18.00
Szia!


Én nem is a tartalomra reagáltam, csak a megfogalmazásra.


Üdv,
Felhő
6

információ tartalom

Hodicska Gergely · 2007. Feb. 17. (Szo), 03.39
Minden ami m$ az ordogtol valo es ezt nagyon komolyan mondom!
Ez így elég komolytalan megállapítás, ha lehet kerüljük ezeket!


Üdv,
Felhő