Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML][JavaScript]Update zdjęć, odświeżanie strony, Usunięcie starych z pamięci, cache
koszelek
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 20.09.2007

Ostrzeżenie: (0%)
-----


Witam,
Mam problem z małą aplikacją, której zadaniem jest podmienianie zdjęć:
Jest sobie katalog o nazwie images w nim 16 jpegów:
img1.jpg
img2.jpg
...
...
img16.jpg
Za pomocą php podmieniane są te fotki.
Struktura nigdy się nie zmienia tylko wygląd jpg.
Przeglądarki po upload ciągle pokazują tą samą fotkę.
Próbowałem czyszczenie cache w php, w meta tagach html. Próbowałem również podmienić zdjęcia w js - i to miało jakiś skutek, ale nie do końca (raz działało raz nie).
Mam nadzieję że ktoś spotkał się z takim problemem i jest w stanie mi pomóc.
Z góry dziękuje.
Go to the top of the page
+Quote Post
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


A sprawdziłeś czy w tym folderze ze zdjęciami się zmieniły ?
Go to the top of the page
+Quote Post
koszelek
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 20.09.2007

Ostrzeżenie: (0%)
-----


To nie ulega wątpliwości, ponieważ po kilkukrotnym odświeżeniu strony jest już ok.
Cel jest jasny - musi być od razu OK.
Go to the top of the page
+Quote Post
muniekw
post
Post #4





Grupa: Zarejestrowani
Postów: 243
Pomógł: 22
Dołączył: 1.06.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Możesz np w JS napisać sobie funkcję, która będzie odświeżać stronę po załadowaniu zdjęć. Wydaje mi się, że mogło by pomóc dodanie do adresu strony ciągu (parametru) np. (reload="tak")
Go to the top of the page
+Quote Post
koszelek
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 20.09.2007

Ostrzeżenie: (0%)
-----


Nie wiem czy to się czymś będzie różniło, bo robiłem już tą funkcję tylko z wykorzystaniem window.location="./mojastron"
Czasem nawet w pętli 4 nie dawało rady (nie powiem bo czasem i po pierwszym poszło).
Go to the top of the page
+Quote Post
muniekw
post
Post #6





Grupa: Zarejestrowani
Postów: 243
Pomógł: 22
Dołączył: 1.06.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


A spróbuj użyć np: takiej funkcji

Kod
<script type="text/javascript">
<!-- <![CDATA[
function odswiez() {
  if (location.search.indexOf("reload=tak") == -1) {
    znak = (location.search.indexOf("?") == -1)?"?":"&";
    setTimeout("location.href = location.href+znak+'reload=tak'", 2000);
  }
}
window.onload = odswiez;
// ]]> -->
</script>


Ten post edytował muniekw 30.07.2009, 11:36:23
Go to the top of the page
+Quote Post
koszelek
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 20.09.2007

Ostrzeżenie: (0%)
-----


....hmmm
Nie do końca wiem jak użyć tej funkcji?
Może jeszcze jakaś mała wskazówka?

Ja to zrobiłem tak:
przekazuje z formularza ?reload=tak

w js sprawdzam:
Kod
if(getURLParam('reload')=='tak') { window.location="./manager.php";}

oczywiście mam napisaną funkcję 'getURLParam()'

Niestety to nie działa tak jak oczekuję - raz załapie innym razem już nie.

.... acha
W tym momencie się dopatrzyłem że tam jest wywołane ciągłe odświeżanie strony - tak też nie mogę zrobić .
Go to the top of the page
+Quote Post
muniekw
post
Post #8





Grupa: Zarejestrowani
Postów: 243
Pomógł: 22
Dołączył: 1.06.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ta funkcja tak naprawdę odświeża stronę po jej załadowaniu i odczekaniu określonego czasu, ale dzieje się to tylko raz.
Go to the top of the page
+Quote Post
zegarek84
post
Post #9





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(koszelek @ 30.07.2009, 12:18:56 ) *
Za pomocą php podmieniane są te fotki.
Struktura nigdy się nie zmienia tylko wygląd jpg.
Przeglądarki po upload ciągle pokazują tą samą fotkę.

przez zdanie, że struktura dokumentu pozostaje taka sama więc w dokumencie nie zmieniają się nawet adresy img??.. jeśli tak to tu musisz wyłączyć w przeglądarce buforowanie obrazków - jeśli z poziomu php to wyślij takie nagłówki wg wskazóweg tego co zacytuję (no ja raczej z kolei caszuje ;p - więc nie jestem pewien czy o jakimś nagłówku tu nie zapomnieli):
Cytat
Skrypty PHP często służą do generowania dynamiczej treści, która nie może być buforowana przez klienta czy serwer proxy. Pamięć cache (bufor) w większości tych urządzeń da się wyłączyć dzięki:
  1. <?php
  2. header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // data w przeszłości
  3. header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  4.                                                     // ciągle modyfikowany
  5. header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
  6. header("Cache-Control: post-check=0, pre-check=0", false);
  7. header("Pragma: no-cache");                          // HTTP/1.0
  8. ?>

dodatkowo - ale nie chcesz zmieniać struktury dokumentu więc zapewne sam dokument keszujesz - mógłbyś się posłużyć czymś takim jak to niektórzy robią z js. (ostatni post - a jeśli html'a nie chcesz keszować w przegląedarce też to te nagłówki co podałem wyżej plus od początku temat z linku... - ale w zasadzie jeśli zmienisz tak adres obrazka to i dokument html za bardzo nie może być keszowany ;p):
http://forum.php.pl/index.php?showtopic=105194

Ten post edytował zegarek84 30.07.2009, 12:02:55
Go to the top of the page
+Quote Post
koszelek
post
Post #10





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 20.09.2007

Ostrzeżenie: (0%)
-----


Ok, dzięki za pomoc.
Mogę tylko podkreślić że wykorzystałem jedyny działający u mnie sposób z dodaniem losowej liczby do nazwy pliku

Kod
<img src="images/img10.jpg?random=<?php echo rand() ?>" alt="" />
Go to the top of the page
+Quote Post
zegarek84
post
Post #11





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


nie jedyny - nagłówki które podałem na 100% powinny zadziałać - dzięki nim przeglądarka nie powinna obrazków buforować - u Ciebie problem polegał zapewne w tym, że te obrazki już miałeś wczytane do przeglądarki - więc już są zbuforowane (a zabezpiecza się przed buforowaniem a nie kasuje bufor), więc musisz po prostu ręcznie usunąć wcześniej cache z przeglądarki... a aby dla każdego obrazka wynagłówki to musisz te obrazki wyświetlać przez skrypt php w którym dopiero wysyłasz i nagłówki i obrazek... aby obrazki miały "normalny" adres a nie rozszerzenie php to skożystaj z htaccess i przekierowania na skrypt php wszystkich obrazków z podaniem w parametrze np. ścieżki do pliku (najlepiej bez przekierowania 301 - ale to jak już tam wolisz)...
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.09.2025 - 20:09