Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> js z php - cache przeglądarki
nospor
post 12.11.2010, 13:03:25
Post #1





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Hejka,
dołączam skrypty js nie poprzez plik.js ale poprzez plik.php, czyli źródłem jest skrypt php, który generuje mi skrypty js
Dołączam to do strony standardowo:
  1. <script type="text/javascript" src="gzip.php"></script>

Plik gzip.php kompresuje mi pliki .js i wyrzuca do przeglądarki jako jedną skompresowaną treść
Rzucam oczywiście nagłówki
  1. $expires = 604800;
  2. header("Pragma: public");
  3. header("Cache-Control: maxage=".$expires);
  4. header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
  5. header('Content-Type: text/javascript');

Niestety taki js pobrany z php nie jest cachowany przez przeglądarkę. Za każdym razem przeglądarka leci po niego. Każdy normalnie wczytany .js jest cachowany mi przez przeglądarkę. Idzie jakoś temu zaradzić? Może w tych nagłowkach mam jakiś błąd?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
flashdev
post 12.11.2010, 13:06:59
Post #2





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Powinno działać, ale skoro to nie działa, to może spróbuj zmienić rozszerzenie (gzip.js) i zrobić przekierowanie w .htacces.


--------------------
Go to the top of the page
+Quote Post
nospor
post 12.11.2010, 13:08:52
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@flashdev pomyślałem dokładnie o tym samym, jednak wolałem nic tu nie zmieniać i miałem nadzieję, że coś poradzicie bez takich kombinacji smile.gif
Jeśli jednak się nie da, to jak najbardziej przejdę na .js, jednak z pewnych podowdów wolałbym tego uniknąć.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
flashdev
post 12.11.2010, 13:13:49
Post #4





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Kod
HTTP/1.1 200 OK
Date: Fri, 12 Nov 2010 12:09:42 GMT
Server: Power MOD by linuxpl.com mod_python/3.3.1 Python/2.5.2 mod_fastcgi/2.4.6 mod_wsgi/3.1 Phusion_Passenger/2.2.14 mod_fcgid/2.3.5
Last-Modified: Mon, 04 Oct 2010 10:58:03 GMT
Etag: "55c897e-db3-491c86b1704c0"
Accept-Ranges: bytes
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Content-Length: 2033
Keep-Alive: timeout=5, max=10000
Connection: Keep-Alive
Content-Type: application/javascript


Sprawdziłem jakie nagłówki wyrzuca mój serwer dla plików js i jest tak jak powyżej.
Część z nich z Twojego punktu widzenia jest nieistotna, ale zostawiłem oryginał bez zmian.


--------------------
Go to the top of the page
+Quote Post
nospor
post 12.11.2010, 13:17:18
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ja mam
Cytat
Date Fri, 12 Nov 2010 12:06:52 GMT
Server Apache/2.2.16 (Ubuntu)
X-Powered-By PHP/5.3.3-1ubuntu9.1
Pragma public
Cache-Control maxage=604800
Expires Fri, 19 Nov 2010 12:06:52 GMT
Content-Encoding gzip
Keep-Alive timeout=15, max=42
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/javascript

Jednak to nadal nie rozwiązuje mojego problemu winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
flashdev
post 12.11.2010, 13:25:27
Post #6





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Google zwraca takie coś:
Kod
HTTP/1.1 304 Not Modified
Date: Fri, 12 Nov 2010 12:13:33 GMT
Expires: Fri, 26 Nov 2010 12:13:33 GMT
Age: 531
Server: GFE/2.0

Wydaje mi się, że Expires i ewentualnie Date powinno wystarczyć. Jesteś pewny, że cachowanie nie działa?


--------------------
Go to the top of the page
+Quote Post
nospor
post 12.11.2010, 13:28:42
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jesteś pewny, że cachowanie nie działa?
Tak.
Firebug zwraca:
Cytat
GET gzip.php 200 OK
GET inne.js 304 Not Modified (ten ma wlasnie te 9KB)

2 żądania

166.3 KB

(9 KB z bufora podręcznego)
114ms (onload: 1.63s)

Czyli widac ze js się scachowal, a php nie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
flashdev
post 12.11.2010, 13:44:28
Post #8





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


  1. <?php
  2. if( isset($_GET[js]) ){
  3. $expires = 604800;
  4. header("Pragma: public");
  5. header("Cache-Control: maxage=".$expires);
  6. header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
  7. header('Content-Type: text/javascript');
  8. if( empty($_SESSION[cnt]) ){
  9. $_SESSION[cnt] = 0;
  10. }
  11. ++$_SESSION[cnt];
  12. echo 'alert(\'witaj po raz '.$_SESSION[cnt].'\');';
  13. }else{
  14. ?>
  15. <script src="test.php?js=1" type="text/javascript"></script>
  16. test
  17. <?php
  18. }
  19. ?>


Napisałem prosty skrypt opierający się na Twoich nagłówkach.
Działa w Operze, FF i Chrome.

Edit:
Jedna istotna sprawa, której możliwe, że nie rozróżniasz:
Wciśnięcie F5, a wciśnięcie ENTER w pasku adresu nie są równoważne.


--------------------
Go to the top of the page
+Quote Post
nospor
post 12.11.2010, 13:49:53
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jedna istotna sprawa, której możliwe, że nie rozróżniasz:
Wciśnięcie F5, a wciśnięcie ENTER w pasku adresu nie są równoważne.
Ok. Faktycznie sprawa wygląda już ciut inaczej.

Nie mniej jednak nawet przy F5 skrypty js pisze ze siorbie z cache, a php nie:
Cytat
GET gzip.php 200 OK
GET inne.js 304 Not Modified (ten ma wlasnie te 9KB)

2 żądania 166.3 KB (9 KB z bufora podręcznego) 114ms (onload: 1.63s)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 04:45