co znaczy cache'owac, jak? Baza mysql. Jak pisac rozproszona strone www?

0

Witam. Chciałbym zapytać o kilka rzeczy.

  1. Czytam, widze wszędzie słowo "cache", ale nie wiem o co chodzi, jak to zrobić. Czy są do tego jakieś biblioteki i w nich funkcje których używam do cache'owania zdjęć, tekstu czy wyników z bazy/php, czy moze sam mam sobie zrobić funkcje np. żeby mi w pliku jakimś zapisało wynik jakiegoś obliczania, ale znów jak zdjęcie cache'ować? Proszę o wytłumaczenie mi jak to się robi, jak należy to robić, jak w dużych serwisach to robić i jak to robią. Polecaliście mi kiedyś w innym temacie odnośnie portalu, różne biblioteki, jak one działają, jak te tresci, zdjecia cache'ują?
  2. Chcę teraz na stronie zrobić w panelu admina Ostrzeżenia i Banowanie. Zastanawiam się jak to ugryźć, czy ostrzeżenia mam zapisywać, ich ilość, w tabeli users i bana też, czy w osobnej tabeli przeznaczonej na ostrzeżenia mam te ostrzeżenia zapisywac i je zliczać przy jakimś sprawdzaniu? Wiadomo, że takich ostrzeżeń nie każdy będzie miał, chcę zrobić że można mieć 3 ostrzeżenia i potem za 4 = ban, wiec x userów * 2-3 ostrzeżenia bd.
  3. Jak napisać rozproszoną stronę www - korzystającą z kilku/-dziesieciu/-set serwerów? Czy to po prostu wrzucanie zdjec np przy zmianie profilowego zdjecia na oddzielny serwer i wczytywanie ich z tego właśnie serwera, i treści także z innego serwera? To rozwiązanie jeśli prawidłowe jest, to domyślam się że na kilka serwerów okej jest, ale co z większymi portalami jak nk czy nawet allegro, jak mozna to zrobic w takich portalach?

Jeżeli pominąłem a przyda się, to chodzi mi o php i mysql, co do większych serwisów to i o pythonie można zapodać sugestię.

Proszę o pomoc i z góry dzięki.

0

1.
Co do cache-owania zapytań to chodzi o to, żeby wynik zapytania zapisać sobie do pliku. Oczywiście sens korzystania z tego rozwiązania jest gdy:

  • zapytanie wykonuje się długo (absolutnie nie cache-uj wszystkich zapytań, bo zapewne tylko pogorszysz wydajność)
  • dane w tabeli nie odświeżają się za często

Biblioteki do tego zapewne są, ja nigdy nie miałem potrzeby cache-owania wyników z MySQL (ale cache'owałem sobie np. zapytania do zewn. serwisów o pogodę - zamiast pytać za każdym razem - sprawdzałem, czy istnieje plik z aktualnej godziny - jeżeli tak, to czytam z niego, jeżeli nie to czytam z sieci i zapisuję do pliku). W Google raczej przykładów nie brakuje, poszukaj.

Co do cache'owania obrazków - zapewne chodzi o portale, w których nie masz tak, że wgrywasz w CMS obrazek, zapisuje się jego wersja duża i mała (miniaturka) [prostsza metoda i mniej zajmująca miejsca na dysku], tylko na serwerze jest oryginał pliku, a po miniaturkę, albo "powiększenie" (ale nie w 1:1, tylko np. 1000x800) odwołujesz się np. tak: thumb.php?width=1000&height=800&image=jakisplik.jpg - wtedy skrypt na bieżąco wycina obraz do zadanego rozmiaru - przydaje się to gdy np. zmieniamy layout i potrzebujemy miniaturki w innym wymiarze - ale takie przycinanie za każdym odwołaniem zarżnęło by serwer, więc miniaturkę generuje się raz, zapisuje jako cache i z niej korzysta, jeżeli jest już raz wygenerowana.

System oczywiście musi być tak zaprojektowany, że po wywaleniu wszystkich danych cache - dalej działa.

2.
Ostrzeżenia - zapewne chcesz zapisać w bazie kto dał osteżenie, kiedy i za co - to już się prosi o osobną tabelkę.

3.
Tu niewiele Ci pomogę, bo oprócz postawienia osobnego serwera na bazę, osobnego na skrypty i osobnego/osobnych na cały content plikowy (obrazki, skrypty) - to nie wiem co więcej można zrobić. Nie wyobrażam sobie żeby wielkie portale miały bazę na jednym serwerze i nie wyobrażam sobie prób synchronizacji bazy na wielu serwerach, żeby nic nie zginęło ;) PHP podobno nie jest w takich sprawach dobry, podejrzewam, że podobnie jak MySQL. Tu mogę odesłać do Google - coś tam piszą w tym temacie.

0
  1. Odnośnie cache'owania obrazków, czy np. o taki myk w .htaccess chodzi?
FileETag none
# pliki cachowane przez 3360 dni (60x60x24x3360)
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=290304000, public"
</FilesMatch>

# Pliki cachowane przez 2 dni
<FilesMatch "\.(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>

# Pliki cachowane przez 2 godziny
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>

znalazłem o tym takie 2 linki: http://www.webzky.pl/projektowanie-stron/wydajniejsza-strona-dzieki-cachowaniu/
http://traxter-online.net/webmaster/naglowki-etag-i-expires-czyli-cachowanie-elementow-strony-w-przegladarce/

0

Cache'owanie statycznych obrazków - no tak, o tym nie wspomniałem - ja to zostawiam przeglądarkom. Opera (nie wiem jak inne) ma domyślnie 5 godzin. Do przeglądania bieżącego wystarczy - po 5 godzinach nawet jak ustawisz 10 lat cache - to i tak przeglądarka zapewne nie będzie miała tego w cache, bo po 5 godzinach przeglądania internetu zwykle cache jest przepełniony innymi rzeczami ;) Więc tak czy tak plik ściągnie.
Można ustawić na tydzień (warto pamiętać, że to jest sugestia, a nie przykazanie dla przeglądarki), więcej i tak nie ma sensu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1