🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
12 messages
12 total messages Started by Marek 'Qrczak' Potocki Thu, 01 Dec 2011 07:55
wymuszenie przełądowania pliku ze skryptami
#50959
Author: Marek 'Qrczak' Potocki
Date: Thu, 01 Dec 2011 07:55
18 lines
1497 bytes
Mam pewien nieduży, ale upierdliwy problem.
Otóż jest sobie strona, do której dopinam pliki z se skryptami 
<script src='abc.js'...

Jako, że strona ewoluuje, to w plikach tych pojawiają się zmiany. Norma.
Tylko przeglądarki nie dociągają nowej wersji i w efekcie strony nie chcą
działać jak powinny. Niby wystarczy wymusić odświeżenie strony (w Firefoxie
ctrl+shift+r), ale jest to dość upierdliwe. Jest jakaś prosta metoda na
zmuszenie przeglądarki do przeładowywania takich plików, jeśli uległy one
zmianom? Wydaje mi się, że powinno się to dziać samoczynnie, ale jakoś nie
chce :(

Podpowiedzcie, co z tym fantem zrobić?

-- 
Pozdrawiam z Wrocławia
Marek Potocki
Przewodnik sudecki klasy 0
Re: wymuszenie przełądowania pliku ze skryptami
#50960
Author: Sergiusz Rozanski
Date: Thu, 01 Dec 2011 08:16
23 lines
2112 bytes
Dnia 01.12.2011 Marek 'Qrczak' Potocki <brak@maila.pl> napisał/a:
> Mam pewien nieduży, ale upierdliwy problem.
> Otóż jest sobie strona, do której dopinam pliki z se skryptami 
><script src='abc.js'...
>
> Jako, że strona ewoluuje, to w plikach tych pojawiają się zmiany. Norma.
> Tylko przeglądarki nie dociągają nowej wersji i w efekcie strony nie chcą
> działać jak powinny. Niby wystarczy wymusić odświeżenie strony (w Firefoxie
> ctrl+shift+r), ale jest to dość upierdliwe. Jest jakaś prosta metoda na
> zmuszenie przeglądarki do przeładowywania takich plików, jeśli uległy one
> zmianom? Wydaje mi się, że powinno się to dziać samoczynnie, ale jakoś nie
> chce :(
>
> Podpowiedzcie, co z tym fantem zrobić?

Najprościej to zmiana nazwy pliku. Może w apache idzie zablokować odpowiedź
304.

-- 
"A cóż to za sens kupować samochód, żeby jeździć po asfalcie? 
Tam, gdzie jest  asfalt, nie ma nic ciekawego,  a gdzie  jest 
coś ciekawego, tam nie ma asfaltu".
               Strugaccy - Poniedziałek zaczyna się w sobotę.
Re: wymuszenie przełądowania pliku ze skryptami
#50961
Author: Marek 'Qrczak' Potocki
Date: Thu, 01 Dec 2011 08:36
15 lines
1227 bytes
Dnia 01 Dec 2011 08:16:48 GMT, Sergiusz Rozanski napisał(a):
 
> Najprościej to zmiana nazwy pliku. 

Dużo zabawy by z tym było, ale w ostateczności...

> Może w apache idzie zablokować odpowiedź
> 304.

O tym faktycznie nie pomyślałem. Dzięki za trop :)

-- 
Pozdrawiam z Wrocławia
Marek Potocki
Przewodnik sudecki klasy 0
Re: wymuszenie przełądowania pliku ze skryptami
#50962
Author: Sergiusz Rozanski
Date: Thu, 01 Dec 2011 09:00
24 lines
2027 bytes
Dnia 01.12.2011 Marek 'Qrczak' Potocki <brak@maila.pl> napisał/a:
> Dnia 01 Dec 2011 08:16:48 GMT, Sergiusz Rozanski napisał(a):
>  
>> Najprościej to zmiana nazwy pliku. 
>
> Dużo zabawy by z tym było, ale w ostateczności...

Jak strona dynamiczna to może pomóc jakiś 'lewy' parametr typu np
w php:

echo "<script src=\"java.js?v=".rand()."\">";

>> Może w apache idzie zablokować odpowiedź
>> 304.
>
> O tym faktycznie nie pomyślałem. Dzięki za trop :)
>


-- 
"A cóż to za sens kupować samochód, żeby jeździć po asfalcie? 
Tam, gdzie jest  asfalt, nie ma nic ciekawego,  a gdzie  jest 
coś ciekawego, tam nie ma asfaltu".
               Strugaccy - Poniedziałek zaczyna się w sobotę.
Re: wymuszenie przełądowania pliku ze skryptami
#50963
Author: Marek 'Qrczak' Potocki
Date: Thu, 01 Dec 2011 09:28
21 lines
1636 bytes
Dnia 01 Dec 2011 09:00:30 GMT, Sergiusz Rozanski napisał(a):

> Dnia 01.12.2011 Marek 'Qrczak' Potocki <brak@maila.pl> napisał/a:
>> Dnia 01 Dec 2011 08:16:48 GMT, Sergiusz Rozanski napisał(a):
>>  
>>> Najprościej to zmiana nazwy pliku. 
>>
>> Dużo zabawy by z tym było, ale w ostateczności...
> 
> Jak strona dynamiczna to może pomóc jakiś 'lewy' parametr typu np
> w php:
> 
> echo "<script src=\"java.js?v=".rand()."\">";

Dzięki, przetestuję. Tylko nie rand(), a filemtime(), co (chyba) pozwoli na
przeładowywanie tylko jeśli plik był zmieniony.

-- 
Pozdrawiam z Wrocławia
Marek Potocki
Przewodnik sudecki klasy 0
Re: wymuszenie przełądowania pliku ze skryptami
#50964
Author: Adam Byrtek
Date: Thu, 01 Dec 2011 15:56
9 lines
1398 bytes
On 12/01/2011 10:28 AM, Marek 'Qrczak' Potocki wrote:
> Dzięki, przetestuję. Tylko nie rand(), a filemtime(), co (chyba) pozwoli na
> przeładowywanie tylko jeśli plik był zmieniony.

Raczej to drugie, bo pierwsza opcja to wylewanie dziecka z kąpielą 
(tracisz cały caching).

-- 
Adam Byrtek
Re: wymuszenie przełądowania pliku ze skryptami
#50965
Author: Marek 'Qrczak' Potocki
Date: Fri, 02 Dec 2011 05:53
16 lines
1568 bytes
Dnia Thu, 01 Dec 2011 16:56:41 +0100, Adam Byrtek napisał(a):

> On 12/01/2011 10:28 AM, Marek 'Qrczak' Potocki wrote:
>> Dzięki, przetestuję. Tylko nie rand(), a filemtime(), co (chyba) pozwoli na
>> przeładowywanie tylko jeśli plik był zmieniony.
> 
> Raczej to drugie, bo pierwsza opcja to wylewanie dziecka z kąpielą 
> (tracisz cały caching).

Wygląda nawet, że działa.
Podziękowania wielkie dla Sergiusza :)

-- 
Pozdrawiam z Wrocławia
Marek Potocki
Przewodnik sudecki klasy 0
Re: wymuszenie przełądowania pliku ze skryptami
#50966
Author: Sergiusz Rozanski
Date: Fri, 02 Dec 2011 18:51
9 lines
1711 bytes
Dnia 01.12.2011 Adam Byrtek <adambyrtek@gmail.com> napisał/a:
> On 12/01/2011 10:28 AM, Marek 'Qrczak' Potocki wrote:
>> Dzięki, przetestuję. Tylko nie rand(), a filemtime(), co (chyba) pozwoli na
>> przeładowywanie tylko jeśli plik był zmieniony.
>
> Raczej to drugie, bo pierwsza opcja to wylewanie dziecka z kąpielą 
> (tracisz cały caching).

Ale to był właśnie taki cel aby pomijać cache i ładować zawsze nowy JS.
Re: wymuszenie przełądowania pliku ze skryptami
#50969
Author: Artur Muszyński
Date: Sat, 03 Dec 2011 19:56
11 lines
1613 bytes
W dniu 2011-12-01 09:16, Sergiusz Rozanski pisze:
> Najprościej to zmiana nazwy pliku. Może w apache idzie zablokować odpowiedź
> 304.

Po co blokować 304? Jeśli serwer odeśle 304, to znaczy, że plik nie 
został zmodyfikowany i browser powinien wyświetlić, co ma w pamięci 
podręcznej, w przeciwnym razie powinien przeładować. Może w konfiguracji 
Apache ktoś przedobrzył, usuwa nagłówek Last-Modified i korzysta z 
mod_expires. Podejrzyj, co dostajesz w nagłówkach odpowiedzi.

artur
Re: wymuszenie przełądowania pliku ze skryptami
#50967
Author: Adam Byrtek
Date: Sat, 03 Dec 2011 20:39
14 lines
1774 bytes
On 12/02/2011 07:51 PM, Sergiusz Rozanski wrote:
>> >  Raczej to drugie, bo pierwsza opcja to wylewanie dziecka z kąpielą
>> >  (tracisz cały caching).
> Ale to był właśnie taki cel aby pomijać cache i ładować zawsze nowy JS.

Celem było pomijać cache jeśli kod uległ zmianie. Jaki sens miałoby 
ignorowanie go zupełnie i wydłużanie czasu ładowania strony?

Nawiasem mówiąc, bardziej eleganckie rozwiązanie to konfiguracja serwera 
HTTP tak, aby przesyłał poprawne nagłówki ETag dla plików statycznych.

-- 
Adam Byrtek
http://adambyrtek.net
Re: wymuszenie przełądowania pliku ze skryptami
#50968
Author: Sergiusz Rozanski
Date: Sun, 04 Dec 2011 15:46
20 lines
2202 bytes
Dnia 03.12.2011 Adam Byrtek <adambyrtek@gmail.com> napisał/a:
> On 12/02/2011 07:51 PM, Sergiusz Rozanski wrote:
>>> >  Raczej to drugie, bo pierwsza opcja to wylewanie dziecka z kąpielą
>>> >  (tracisz cały caching).
>> Ale to był właśnie taki cel aby pomijać cache i ładować zawsze nowy JS.
>
> Celem było pomijać cache jeśli kod uległ zmianie. Jaki sens miałoby 
> ignorowanie go zupełnie i wydłużanie czasu ładowania strony?

Gdy browsery przychodzą po statyczne pliki i lecą z cache po 304 ...

> Nawiasem mówiąc, bardziej eleganckie rozwiązanie to konfiguracja serwera 
> HTTP tak, aby przesyłał poprawne nagłówki ETag dla plików statycznych.

... to ww jest dobrym wyjściem.

Gorzej gdy już było źle i klienci nie przylatują po pliki w ogóle, nawet po
304. Wtedy jedyne rozwiązanie (na szybko) to zmiana pliku, parametru itd.
Oczywiście nie na stałe, ale do znalezienia problemu i jego rozwiązania
zasugerowałem skuteczny workaround.
Re: wymuszenie przełądowania pliku ze skryptami
#50970
Author: Marek 'Qrczak' Potocki
Date: Mon, 05 Dec 2011 05:58
20 lines
1738 bytes
Dnia Sat, 03 Dec 2011 20:56:03 +0100, Artur Muszyński napisał(a):

> W dniu 2011-12-01 09:16, Sergiusz Rozanski pisze:
>> Najprościej to zmiana nazwy pliku. Może w apache idzie zablokować odpowiedź
>> 304.
> 
> Po co blokować 304? Jeśli serwer odeśle 304, to znaczy, że plik nie 
> został zmodyfikowany i browser powinien wyświetlić, co ma w pamięci 
> podręcznej, w przeciwnym razie powinien przeładować. Może w konfiguracji 
> Apache ktoś przedobrzył, usuwa nagłówek Last-Modified i korzysta z 
> mod_expires. Podejrzyj, co dostajesz w nagłówkach odpowiedzi.

Dziękuję jeszcze raz z rady, podejrzę nagłówki.
Wprawdzie na tym serwerze pracuje lighttpd, a nie apache, ale to nie ma
raczej większego znaczenia.

-- 
Pozdrawiam z Wrocławia
Marek Potocki
Przewodnik sudecki klasy 0
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads