![]() |
![]() ![]() |
![]() |
--Ciekawy-- |
![]() ![]()
Post
#1
|
Goście ![]() |
Mam pytanie.
Bawie sie silniikiem gry Gamer-Fusion i mam pytanie (nie chodzi tylko o ten silnik, ogolnie), co mozna cachowac w grze tekstowej via www? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 42 Dołączył: 27.07.2010 Skąd: Jaworzno Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie to wszystko, głównie zapytania...
Wyobraź sobie , że masz nagle na stronie 20 tyś użytkowników i wszyscy oni pobierają dane z bazy... A tak to jeden pobierze raz na np. 5 minut ... Ten post edytował xxdrago 8.03.2012, 23:23:31 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
@up a co w przypadku jak większość danych musi być dynamicznie pobieranych? Np jakaś mapa, a po tej mapie poruszają się inni gracze i żeby każdy się widział, to po 5 minutach dopiero się zobaczą bo odświeży się cache?
Nie tyle co cache, co optymalizacja i konkretny sprzęt. Cache w przypadku dynamicznych danych nijak nie spełni swojej roli. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
@up a co w przypadku jak większość danych musi być dynamicznie pobieranych? Np jakaś mapa, a po tej mapie poruszają się inni gracze i żeby każdy się widział, to po 5 minutach dopiero się zobaczą bo odświeży się cache? Nie tyle co cache, co optymalizacja i konkretny sprzęt. Cache w przypadku dynamicznych danych nijak nie spełni swojej roli. Ja u siebie do danych dynamicznych (ale nie takich co zmieniaja sie co sekunde ale np raz co minute a raz co 10 minut) stosuje cache które jest dostępne za pomoca jakiegos ID i podając to ID mozna je rowniez wykasowac. I Dla bardziej popularnych fragmentow dynamicznych strony w modelach ktore grzebią w tych danych usuwam zawsze cache jezeli istnieje (te cache ktore sie zdeaktualizowaly), jesli robie commit do bazy danych. Ale trzeba sie przy tym troche opisac, w przypadku ogolnym jest to raczej niewykonalne. Najfajniej jest cachować kawałki strony i z tych kawałków sklejac całą stronę, nie cachując elementów silnie dynamicznych. Np dla strony z mocno rozbudowanym nagłówkiem, zawierajacym menu generowane na podstawie bazy danych, zastapienie nagłówka i stopki elementami cachowanymi i regenrowanymi w razie potrzeby skrocilo czas ladowania kazdej podstrony o prawie połowę. widze ze Crozin czyta ten temat, więc powiem (IMG:style_emoticons/default/smile.gif) Tak, tam przydały się aktywne widoki ktore same sprawdzaly czy cache jest swieze i regenerowały sie w razie potrzeby a jak nie to wczytywaly sie z cache, a z punktu widzenia kontrolerów czy byly cachowane czy nie wygladalo to w dosc czytelny sposob: $view->render() praktycznie zadnych zmian w poroownaniu do wersji bez cachowania kawałków. wiem ze jest esi ale cache w klasach widokow jest mniej klopotliwe, nie wymaga robienia routingu specjalnie dla cachowanych fragmentów. moze varnish troche szybciej dziala ale mimo wszystko silnik PHP rowniez znacznie szybciej skleja pliki niz generuje od nowa HTML. Ja przychylam sie raczej do cachowania gotowych zrenderowanych kawałków stron niż zapytań - wychodzi w zasadzie na to samo, a wydajnosc jest jeszcze lepsza. Bo jesli ze scachowanego zapytania wyrenderujemy troche htmla 2 razy to 2 razy wyjdzie nam to samo, nie ma sensu, lepiej zapisac do pliku/apc gotowy html. co ciekawe, zauwazylem ze cachowanie gotowego htmla w plikach dziala szybciej (ok 20%) niz cachowanie w APC. Nie umiem tego wyjasnic, moze to wynika z marnego dysku na moim lapie. Ten post edytował Orzeszekk 9.03.2012, 00:46:11 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Cytat Ja przychylam sie raczej do cachowania gotowych zrenderowanych kawałków stron niż zapytań - wychodzi w zasadzie na to samo, a wydajnosc jest jeszcze lepsza Masz racje tez doszedlem do takiego wniosku. Jesli moge robi cache calego komponentu a jak nie to tylko jego czesci czyli tak zwane regiony.Jednak juz w usuwanie cache regionow przy jakims updatem sie nie bawilem(choc to jest 1 linijka kodu) bo tak czy siak cache sie sam usuwa co np 10min |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ja u siebie do danych dynamicznych (ale nie takich co zmieniaja sie co sekunde ale np raz co minute a raz co 10 minut) stosuje cache które jest dostępne za pomoca jakiegos ID i podając to ID mozna je rowniez wykasowac. I Dla bardziej popularnych fragmentow dynamicznych strony w modelach ktore grzebią w tych danych usuwam zawsze cache jezeli istnieje (te cache ktore sie zdeaktualizowaly), jesli robie commit do bazy danych. Napisałem o co mi chodziło z tymi danymi dynamicznymi, czyli powiedzmy aktualizowanych co 1sekundę. Nie wiem czy jest wtedy sens cachowania takich danych. |
|
|
--Ciekawy-- |
![]()
Post
#7
|
Goście ![]() |
Napisałem ten temat ze względu na te dane dynamiczne (IMG:style_emoticons/default/wink.gif)
W sumie myślę jak by_ikar. A zcachuje tylko jakies rankingi itd (IMG:style_emoticons/default/smile.gif) Dzięki za odpowiedzi. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tak, cachowanie rankingów, czy innych podstron których dane nie odświeżają się co sekundę jest nawet jak najbardziej wskazane. W przypadku szybko zmieniających się danych, pozostaje optymalizacja samych zapytań, optymalizacja bazy danych pod konkretne zapytania, oraz dołożenie ramu i trzymanie jeżeli to jest możliwe, całej bazy w pamięci ram. Lub nawet wydzielenie bazy na osobną maszynę. To wszystko zależy od ruchu jaki przewidujesz. Im większy, tym zapotrzebowanie się zwiększy..
|
|
|
--Ciekawy-- |
![]()
Post
#9
|
Goście ![]() |
Powiedzmy, że będzie zalogowanych 100/200 osób.
Jakiej maszyny potrzebuje, żeby utrzymać grę pisaną struktularnie w której skrypty i zapytania są zoptymalizowane? |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się że średniej klasy dedyk powinien dać sobie spokojnie radę. Aczkolwiek, mogę się mylić, bo nie tworzyłem nigdy takich projektów, ale jeżeli to by były w większej mierze same updaty (zmiana lokalizacji gracza) + jednocześnie selecty (pobranie informacji o pozostałych graczach, w danym obszarze), to aż tak wymagające to nie powinno być, więc wydaje mi się że w serwerze za 100-200zł miesięcznie powinieneś spokojnie bez większych obaw móc działać. Oferta 24g: http://www.kimsufi.pl/ jest IMO bardzo kusząca, 24gb ram spokojnie ci pozwoli na umieszczenie większej części bazy, lub nawet całości w pamięci ram, i wydzielenie kawałka pamięci ram dla samej strony (ramdisk) co by przyspieszyć samą stronę jeszcze, nie szczególnie obciążając dysk. No i też zależy od serwera http jakiego użyjesz, polecam nginx, lub lighttpd (IMG:style_emoticons/default/wink.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 02:13 |