Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [html] transfer
Forum PHP.pl > Forum > Przedszkole
marcinek37
Mam prostą stronkę opartą na leciutkim CMSie, jednak codziennie mam wysokie obciążenie CPU oraz transfer.
Dlaczego? Przez szablon...

Mam w nim kilka plików, które zajmują po 100kb, a nie można ich bardziej odchudzić w photoshopie.
Co mogę zrobić? Oczywiście każdy zasugeruje mi zmianę serwera albo szablonu, jednak ja pomyślałem o czymś zupełnie innym.

Czy nie warto wysłać tych plików na inny serwer, odciążając ten właściwy?
W końcu np. sam Google udostępnia dysk prywatny.

Co o tym sądzicie? I czy znacie takie "przechowalnie" cięższych plików.
Co prawda wspomniałem o dysku Google, ale niestety nie można go w ten sposób użyć, bo trzeba mieć dostęp do konta...
CuteOne
kupujesz drugi serwer za 5zł miesięcznie i po problemie..
Crozin
Cięższe pliki, jak rozumiem chodzi o jakieś pliki statyczne, typu obrazy, CSS, JS?

1. Przede wszystkim cache HTTP - ustaw odpowiednie nagłówki, które pozwolą wszystkim pośredniczącym serwerom cache jak i samej przeglądarce użytkownika na zapisanie obrazów. Lektura obowiązkowa: cache-related http headers
2. Pomyśl nad dodaniem własnego serwera cache stojącego przed serwerem HTTP - np. Varnish.
3. Dodaj kompresowanie Gzip dla treści - zwiększy to zużycie procesora, lecz zmniejszy transfer. Chyba, że uda Ci się cały proces zcacheować (patrz: wspomniany Varnish, bądź własne rozwiązania) wtedy wygrywasz już wszystko.
4. Tak, wywalenie takich plików na zewnętrzny serwer może samo w sobie rozwiązać Twój problem (lepsza infrastruktura, ominięcie limit ilości równoległych żądań HTTP) - pomyśl nad usługami typu S3 Amazonu. Ich koszt przy kilku plikach w popularnych witrynach nadal powinien być śmiesznie mały.

PS. Photoshop wcale nie generuje zbyt oszczędnych plików pod względem wagi. Skorzystaj z programu PNGGauntlet do ich odchudzenia.
marcinek37
1. jak dotąd miałem takie nagłówki:
header('Cache-control: no-cache, no-store');
header('Expires: '.gmdate('D, d M Y H:i:s', time()).' GMT');

zamieniłem je na takie:
header('Cache-control: max-age=3600, public');
header('Expires: '.gmdate('D, d M Y H:i:s', time()).' GMT');

to powinno odciążyć serwer, dobrze myślę?

2. to chyba może mnie przerosnąć...

3. to nie jest konieczne, chodzi mi tylko o te nieszczęsne obrazki...

4. http://aws.amazon.com/s3/ - wychodzi na to, że mogę założyć konto za free i mogę wgrać tam jakieś pliki, a następnie się do nich odwoływać w nieskończoność? dobrze myślę? czy to aby nie działa jak dysk Google? bo jeśli tak, to chyba nie będę mógł na stronie dodać odwołania do obrazka, którego pokazanie będzie wymagało uwierzytelnienia - prosiłbym o większy komentarz
valkirek
4. Obrazki mozesz pobierac z jakiegokolwiek serwera jesli on na to pozwala tylko po cholere miec 2 serwery do jednej "prostej stronki"? W tych czasach serwery sa takie tanie, ze lepiej zaplacic te pare zlotych i po problemie.
Crozin
1. Nagłówek Expires powinien wskazywać na datę w przyszłości, zaś jego użycie łączy się bezpośrednio z nagłówkiem Cache-Control: specyfikacja.
2. W przypadku S3 Amazonu płacisz za wykorzystywane miejsce, każde żądanie HTTP oraz łączny transfer osobno. Są to jednak kwoty liczone w ułamkach groszy. Wyszukaj sobie ich cennik oraz kalkulator - pozwoli Ci to szybko oszacować z jakimi kosztami będziesz miał do czynienia.

Wprowadziłeś wątek uwierzytelniania, który zmienia nieco postać rzeczy. Mógłbyś opisać dokładniej co to za obrazki?
marcinek37
1. naprawdę do końca nie wiem, jak mam to zapisać, czy tak będzie dobrze?
  1. <?
  2. $time = time() + 3600;
  3. header('Cache-control: max-age=3600, public');
  4. header('Expires: '.gmdate('D, d M Y H:i:s', $time).' GMT');
  5. ?>

wiem, że podałeś mi linka, ale tak naprawdę nie wiem, na co mam zwrócić uwagę...

2. chyba użyłem złego określenia; chodziło mi o to, że nie będę mógł dodać linka do fotki, która jest pokazywana po wpisaniu hasła; tak naprawdę fotki te nigdy zmieniać się nie będą, są częścią szablonu

3. czy jest polski odpowiednik tego Amazonu? obawiam się, że czegoś nie zrozumiem albo będzie jakiś inny problem i będę mieć problem się z nimi skontaktować...

CuteOne
Kiedyś korzystałem z ich usług do trzymania plików z aukcji allegro http://webd.pl/konta/medium
marcinek37
a jakieś inne hostingi polecicie?
no i czy ten kod jest poprawny?
valkirek
http://hostingexpert.pl/
Crozin
1. Jeżeli ustawiasz nagłówek Cache-Control z dyrektywą max-age ma ona pierwszeństwo nad nagłówkiem Expires. Innymi słowy jest on już wtedy niepotrzebny.
2. Czy te obrazki muszą koniecznie być dostępne wyłącznie dla zalogowanych użytkowników? Skoro są jedynie częścią szablonu nie zawierają zapewne żadnych istotnych informacji - chyba, że szablon sam w sobie jest tą cenną informacją.
marcinek37
1. rozumiem, zatem ten kod w zupełności wystarczy?
  1. <?
  2. header('Cache-control: max-age=3600, public');
  3. ?>


a może 3600 jeszcze zwiększyć?

2. nie zrozumieliśmy się; pisałem, że do dysku google potrzebne jest hasło; moja strona jest dostępna dla wszystkich, potrzebuję serwera, na który wgram 5 plików z szablonu i potem w .css zamiast /plik.jpg umieszczę http://www.domena.pl/images/plik.jpg - i szukam takiego serwera, na który wgram te pliki, aby odciążyć transfer na swoim

najchętniej dałbym to na dysk google (brak limitów, szybki serwer), ale z tego co wiem, dostęp do niego jest możliwy dopiero po podaniu hasła...
valkirek
No ale podalem Ci link do rankingu hostingow, jesli nie chcesz platnych to poszukaj w google darmowych, google dysk raczej nie sluzy do takich celow a raczej prywatnych
marcinek37
ok, proszę jeszcze o komentarz do cache
a co do serwera to szkoda, miałem nadzieję, że załatwię to bez wydawania kolejnych pieniędzy
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.