Cześć.
No to akurat wiadomo od dawna, że moduły które czytają dane, nawet nie koniecznie losowo, spowalniają stronę. Zobacz ile u mnie jest modułów na głównej. A ja mam ilość jednorazowych połączeń do bazy równą
3 ( trzy ) i co ja mam napisać?.
Ale jest na to sposób. Nie koniecznie musi u Ciebie zadziałać, ale u mnie działa. Dotyczy on z pozoru banalnego jakby się wydawało elementu
Joomla! jakim jest
cache. Otóż jak każdy wie, są tam przetrzymywane dane mające przyśpieszyć szybkość działania strony. Takie jest założenie działania
schowka. Ale ze schowkiem bywa różnie, tym bardziej jeśli strona dynamicznie zmienia swoją treść. Czyli przykładowo Twoje czy moje moduły wykonują pracę. Więc nie dość że wykonywana jest spora ilość zapytań do bazy
SQL w momencie otwierania strony ( tylko dla jednego usera! ) a jeszcze dodatkowo przeglądarka sczytuje dane z
cache. Na moim serwerze efekt tego był taki sam jak i u Ciebie. Wolne wczytywanie strony, a czasami zrywanie połączenia. Więc po prostu wyłączyłem
cache i nie mam problemów z powolnym czytaniem strony. Wiem że nie na każdym serwerze to działa.
Można w inny sposób zaradzić temu. Ale od strony przeglądarki i serwera proxy. Blokowanie
cache'owania strony przez przeglądarkę jest proste. Wykonuje się to przy pomocy tzw. ekwiwalentów
HTTP czyli odpowiednich nagłówków
META w pliku
index.php templatki ( mata tagów ). Te nagłówki należy umieścić w sekcji
<HEAD> kodu
index.php. Oto przykład:
Kod: |
<meta name="Pragma" content="no-cache" />
<meta name="Cache-Control" content="no-store, no-cache, must-revalidate" />
|
Istnienie dwóch różnych nagłówków spowodowane jest różnicą między protokołem
HTTP/1.0 a
HTTP/1.1. Pierwszy nagłówek odnosi się do
HTTP/1.0, a drugi do
HTTP/1.1.
Dużo skuteczniejszym sposobem, jest wysłanie odpowiednich nagłówków
HTTP do przeglądarki/serwera proxy. Można to wykonać tylko przy pomocy
PHP po stronie serwera. Wygląda to tak:
Kod: |
<?php
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
?>
|
Przy korzystaniu z tego sposobu przeglądarka otrzyma od serwera polecenie niezachowywania lokalnej kopii, a serwer proxy przepuści tą stronę do użytkownika bez jej
cache'owania.
Jak pisałem wcześniej, ten sposób nie zawsze jest skuteczny, i może czasami zadziałać odwrotnie, czyli zwiększyć transfer z naszej strony, przez co możemy przekroczyć limity tego transferu.
To może tyle mego wymądrzania się
. Może to komuś się przydać, lub nie przydać.
True lub
False. Trudno
. A teraz idę spać, bo już późno, a zdrówko mi siada, więc muszę trochę odetchnąć od kompa. Przepraszam za późną reakcję, ale obecnie mam trochę innych zajęć, więc często umykają mi posty. Postaram się następnym razem szybciej reagować. Pozdrawiam.
Jokris.