![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Witam mam dosyc banalne pytanie tworze cache cos al'a Kohana bo rozwiazanie z katalogami mi sie nie podoba.
I mam problem powiedzmy ze pobieram wszystkie news'y z bazy jest ich 15 i tablica w pliku cache wyglada mniej wiecej tak: Kod Array( 0 => array( 'id' => 1, 'tytul' => 'Pierwszy news', 'autor' => 'marcio' ), 1 => array( 'id' => 2, 'tytul' => 'Drugi news', 'autor' => 'vodka' ), 2 => array( 'id' => 0, 'tytul' => 'Trzeci news', 'autor' => 'FLash' ) ) //itp dalesz 12 news'ow Ok nie ma problemu gdy chcemy pobrac wszystkie news'y. Co jesli chce pobrac tylko pierwszym 5 na 1 strone potem od 5 do 10 na 2 wiem jak zrobic stronnicowanie nie o to chodzi, jednak nie wiem zabardzo jak zaprojektowac cache bym mogl tez na jego podstawie stronnicowac. Mysle ze tak jak pokazalem jest good jednak nie jestem pewny. Powiedzmy ze ten plik z tym array'em ktory pokazalem nazywa sie news.cache.php bez zadnych tagow. Moglbym tak zaimplementowac funkcje getFromCache() bym mogl zrobic cos takiego:
Cos w tym stylu wtedy pobierze mi news'y z index'ami od 5 do 10 np. EDIT: Przyszlo mi do glowy jeszcze jedno rozwiazanie by plik robic jednak z tagami: news|1-5.cache.php Wtedy w metodzie getAllNews() pobieramy z url'a limit tak jak sie to zawsze robic i pobieram za pomoca tagu ktory wezme z url'a? Co o tym myslicie? Ten post edytował marcio 4.11.2009, 11:27:05 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
W przypadku newsów możesz rozważyć cache'owanie jedynie pierwszej strony wyników, gdyż to ona przeważnie będzie przedmiotem zainteresowania internauty. Na pozostałych ruch powinien być na tyle mały, że cache raczej tam nic nie da. Natomiast w przypadku jakichś list, gdzie chronologia nie ma znaczenia, będziesz musiał cache'ować każdą stronę oddzielnie, dlatego warto przeanalizować, czy to się opłaca. Ja zawsze w przypadku takich zmieniających się danych staram się buforować jedynie domyślnie wyświetlane wartości, wychodząc z założenia, że to one są najczęściej oglądane przy pobieżnym rzucie oka na stronę.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Czyli po twojej odpowiedzi moge wywnioskowac ze jesli w linku nie bedzie strony lub bedzie ona rowna 1 to wyswietle cache gdy strona bedzie > 1 to wtedy pobiore rekordy za pomoca sql'a?
Dobrze zrozumialem? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 4 Dołączył: 16.07.2008 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Drugi sposób (z indeksowaniem nazw plików) będzie chyba najlepszy a na pewno najszybszy.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Tak, dokładnie o to chodzi.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Generalnie jeżeli będziesz cache-ował wszystkie strony to dla każdej strony osobny plik z danymi. Przecież jak będziesz miał sporą liczbę tych newsów to samo odczytanie pliku cache może być kosztowniejsze niż pobranie ich bezpośrednio z bazy danych.
Co do pytania czy cache-ować jedynie pierwszą czy każdą stronę... to zależy. Jeżeli ruch na stronach innych niż pierwszej jest na tyle duży, że obciąża on w dużym stopniu serwer - wtedy możesz cacheować i resztę stron. Jeżeli jednak inne strony są odwiedzane z częstotliwością kilku razy na godzinę to jest to pozbawione sensu. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Cytat Co do pytania czy cache-ować jedynie pierwszą czy każdą stronę... to zależy. Jeżeli ruch na stronach innych niż pierwszej jest na tyle duży, że obciąża on w dużym stopniu serwer - wtedy możesz cacheować i resztę stron. Jeżeli jednak inne strony są odwiedzane z częstotliwością kilku razy na godzinę to jest to pozbawione sensu. Podsumuwujac to juz zalezy odemnie. Gdy maly ruch tylko pierwsza strona reszta zapytania sql, gdy rush jest duzy zrobie tak by moc cache'owac i inne strony thx. Dzis wezme sie za kodzenie (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 07:09 |