Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] Image cache?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
markuz
Witam,

Spotkaliście się kiedyś w js z czymś takim jak cache obrazków? Wczytuję za pomocą mojego wlasnego loadera tablicę obrazków (około 100). Problem tkwi w tym, ze za każdym odświeżeniem okna obrazki wczytuja sie od nowa i trwa to kilka sekund. Chciałbym aby wczytywały się tylko raz przy pierwszym wejsciu na strone. Aktualnie tak wygląda metoda odpowiedzialna za wczytywanie:

[JAVASCRIPT] pobierz, plaintext
  1. load: function(i) {
  2. if(i === undefined) {
  3. // $('#mp-editor-loader').show();
  4. i = 0;
  5. }
  6.  
  7. if(i > this.max) {
  8. this.onload();
  9. return false;
  10. }
  11.  
  12. if(this.images[i] === undefined) {
  13. this.load(i + 1);
  14. return false;
  15. }
  16.  
  17. var filename = this.images[i];
  18. var src = '/image/product_ons?s=' + i + '/' + filename;
  19.  
  20. if(this.isBig[i] === true) {
  21. src = '/image/product_ons?s=' + i + '/' + filename + '&b=1';
  22. }
  23.  
  24. var image = $("img[src$='" + src + "']");
  25.  
  26. if(image[0] !== undefined) {
  27. this.images[i] = image[0];
  28. this.load(i + 1);
  29. return true;
  30. }
  31.  
  32. this.images[i] = new Image();
  33. this.images[i].src = src;
  34. this.images[i].onload = function() {
  35. $m.resourcesLoader.load(i + 1);
  36. };
  37. },
[JAVASCRIPT] pobierz, plaintext
Crozin
Jakie nagłówki HTTP zwracają te obrazki?
markuz
HTTP/1.1 200 OK
Date: Mon, 18 Aug 2014 10:23:38 GMT
Server: Apache
X-Powered-By: PHP/5.3.3-7+squeeze17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: image/png

Zmieniłem cache w PHP na :

Cache-Control: max-age=28800

W JS bez zmian. Nadal obrazek wczytuje się bez cache.
Crozin
Pokaż jeszcze raz jakie nagłówki są serwowane po Twoich zmianach.
markuz
HTTP/1.1 200 OK
Date: Mon, 18 Aug 2014 11:36:09 GMT
Server: Apache
X-Powered-By: PHP/5.3.3-7+squeeze17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: max-age=28800
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=15, max=94
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: image/png
Crozin
Masz konflikt w nagłówkach co może prowadzić do nieprzewidzianych rezultatów. Cache-Control (HTTP 1.1) nakazuje zachować kopię w cache'u, Pragma (HTTP 1.0) nakazuje niezachowywać jej. Pozbądź się całkowicie nagłówka Pragma - obecnie wszystkie przeglądarki wspierają HTTP 1.1.
markuz
Nagłówek końcowy:

HTTP/1.1 200 OK
Date: Mon, 18 Aug 2014 12:31:37 GMT
Server: Apache
X-Powered-By: PHP/5.3.3-7+squeeze17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: max-age=28800
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=15, max=97
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: image/png

Dzięki! smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.