![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 306 Pomógł: 32 Dołączył: 20.01.2008 Ostrzeżenie: (20%)
|
Witam.
Mam pewien skrypt, który łączy się 50 razy z pewną stronką przez różne serwery proxy zapisane w pliku przez cUrla. Na początku wszystko było dobrze, do póki było to rozłożone na dwie części, bo gdy było złączone nie wyświetlało strony. Wtedy skrypt nie zżerał mi tak dużo transferu. Jednak postanowiłem nieco ulepszyć go, by użytkownicy strony mogli widzieć rezultat skryptu bez konieczności czekania na ostanie połączenie - dlatego użyłem sesji do przechowywania wyników i za każdym połączeniem odświeżałem stronę. Jednak okazało się, że skrypt w jeden dzień zużył mi ok. 1,5 GB transferu (użytkowników mam prawie 3 tysiące, aktywnych więcej niż 3/4). I teraz moje pytanie: co spowodowało tak wielki wzrost transferu? To, że co połączenie ładuję stronę (wtedy można by to rozwiązać za pomocą iframe) czy to, że przechowuje duże ilości danych w sesji (chociaż to jest po stronie użytkownika)? Od razu mówię, że pliki graficzne wczytywane do wyglądu strony już zostały skompresowane do jak najmniejszego rozmiaru bez straty jakości. |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 9 Dołączył: 16.09.2005 Skąd: Rybnik Ostrzeżenie: (0%)
|
Hej
Tak sobie myślę czy zapytania do bazy jakieś masz? Odczyt zapis, odczyt, zapis! to może dużo pociągnąć! |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 306 Pomógł: 32 Dołączył: 20.01.2008 Ostrzeżenie: (20%)
|
Nie, żadnych zapisów ani odczytów do bazy danych nie mam. Jedyne co ładuje z zewnętrznego pliku to listę proxy przez file() (wygodnie się potem przegląda jako tablicę).
Ogóle gdy napisałem ten skrypt od nowa pod sesje, przybyło mi:
Ten post edytował smietek 30.06.2009, 05:43:29 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%)
|
Zapewne chodzi Ci o grę menelgame.
Teraz zobacz. 3 tys użytkowników * 50 stron * 10kb jedna = 1,500,000 kb transferu A 1,5gb to jest ok. 1,572,864 kb Więc marne szanse masz na zmniejszenie transferu. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 306 Pomógł: 32 Dołączył: 20.01.2008 Ostrzeżenie: (20%)
|
Czyli jedynym rozwiązaniem na zminimalizowanie zużycia jest ramka, w której będę ładował cały skrypt i wyświetlał sam wynik. Btw: do transferu liczy się rozmiar pliku .php czy zwrócony kod HTML?
Ktoś może mi odpowiedzieć? |
|
|
|
Post
#6
|
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Warto zastosować nagłowki Expires i polecam dodatek do firefoxa o nazwie yslow. Powie ci jak odciążyć serwer od transferu.
Ten post edytował wookieb 30.06.2009, 09:51:23 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%)
|
Btw: do transferu liczy się rozmiar pliku .php czy zwrócony kod HTML? Ktoś może mi odpowiedzieć? zwrócony kod html - ale ten kod też możesz skompresować przez gzip - pozatym umiejętnie nadając nagłówki w php mozna określić czy plik został zmodyfikowany czy nie i czy ma zostać pobrany czy nie - tu polecam zainteresować się ETag... i sprawdzaj te nagłówki wg. własnego algorytmu i przerywaj połaczenie jeśli taki plik posiada przeglądarka... pozatym nieraz na stronie wiele się nie zmienia - można by takie elementy zmieniać poprzez ajax/js - same skrypty js i style css też da się poddać kompresji gzip.... zaś obrazki srawdzaj czy przeglądarka nie ma ich w pamięci aktualnych - jeśli nie aktualne wyślij nowszą wersję, jeśli ma aktualne zrwaj połaczenie - przy okazji można by dodać obsługę algorytmu sprawdzającego czy ktoś nie hotlinkuje obrazków... |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 306 Pomógł: 32 Dołączył: 20.01.2008 Ostrzeżenie: (20%)
|
Zegarek, z tego co napisałeś interesują mnie tylko obrazki (tak, żeby nie ładowały się za każdym razem).
Jak to zrobić, bo ja tego nie czaje? Ten post edytował smietek 1.07.2009, 10:45:07 |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%)
|
ten mój post gdzie obrazek miał wyglądać jak obrazek (zorjentujesz się jak przeczytasz o co chodzi):
http://forum.php.pl/index.php?s=&showt...st&p=626640 i np. taki skrypt do samych obrazków (gdzie w zasadzie ob_start() nie potrzebny - ale exit niby też nie jednak jeśli miały by być jakieś znaki za kodem to dobrym zwyczajem moim zdaniem używać):
możesz też się zainteresować innymi nagłówkami head - np. jaka ma być żywotność obrazka i inne co może w niektórych przeglądarkach też zmniejszyć ilość odpytań serwera - ale skrypt bazowy już masz.... //coś klawiatura zaczyna mi się ciąć... // ps. - zanim się wysyła nagłówki head nie możesz nic wcześniej do przeglądarki wysłać - a więc pliki tez musza być kodowane bez BOM.. Ten post edytował zegarek84 1.07.2009, 11:22:29 |
|
|
|
![]() ![]() |
|
Aktualny czas: 8.08.2026 - 11:07 |