Clicky

Skocz do zawartości


Zdjęcie
- - - - -

[K3] cachowanie - gdzie?

11 odpowiedzi w tym temacie

  • Zaloguj się, aby dodać odpowiedź

#1 JoShiMa

JoShiMa

    Młodszy Mastah

  • Użytkownik
  • PipPip
  • 366 postów

Napisano 09 maj 2011 - 11:25

Gdzie robicie cachowanie danych? W kontrolerach, czy w modelach?

Do tej pory (w Kv2) cachowanie robiłam w kontrolerach, ale dziś mnie olśniło i doszłam do wniosku, ze to przecież modele służą za pobieranie danych i cała zabawa z cachem właśnie tam się powinna odbywać. Może dla was to są oczywiste sprawy, ale ja już straciłam pewność siebie.

#2 barat

barat

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 703 postów
  • Skąd:Czerniejewo/Poznań

Napisano 09 maj 2011 - 11:45

Ja robię w modelu - IMO kontrolerowi powinno być "obojętne" skąd ma dane - ważne, że je ma i są w dobrym formacie ;)

#3 mck

mck

    Jestę Blogerę

  • Admin
  • 1544 postów

Napisano 09 maj 2011 - 11:48

No oczywiście, że w modelu :)

#4 Pedro

Pedro

    Początkujący

  • Użytkownik
  • Pip
  • 64 postów

Napisano 09 maj 2011 - 13:41

Model jest od danych, nie tylko od ich pobierania, więc logicznie rzecz biorąc cache winien być umieszczony w modelu. Jak napisał @barat, kontroler ma guzik do tego skąd ma dane.

Ale widziałem też podejścia robienia cache'u w kontrolerze, moim zdaniem pomysł średniawy.

#5 barat

barat

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 703 postów
  • Skąd:Czerniejewo/Poznań

Napisano 09 maj 2011 - 13:51

Spójrz też pod innym kątem - model jest źródłem danych. Można go używać wielokrotnie w różnych miejscach.
Jak zrobisz cache w kontrolerze, to tylko tam będzie działać. Jak zrobisz w modelu, to nie ważne z którego miejsca wywołasz - zawsze z cache skorzystasz (no chyba, że sobie zrobisz przekazywanie dodatkowego parametru do modelu, który chwilowo cache zignoruje - czasem tez może to być pewnie przydatne)

#6 dimek

dimek

    Początkujący

  • Użytkownik
  • Pip
  • 66 postów

Napisano 09 maj 2011 - 20:01

Zapytam, częściowo nawiązując do tematu. Znacie jakiś ciekawy artykuł dotyczący Cache (co warto cache'ować, jak, dlaczego itd.)?

#7 Pedro

Pedro

    Początkujący

  • Użytkownik
  • Pip
  • 64 postów

Napisano 09 maj 2011 - 21:03

Zapytam, częściowo nawiązując do tematu. Znacie jakiś ciekawy artykuł dotyczący Cache (co warto cache'ować, jak, dlaczego itd.)?

Tutorial? Nie.

Co warto cache'ować? Wszystko. Dane z bazy, przy dużym ruchu strony statyczne.

#8 Zepco

Zepco

    Senior Mastah

  • Moderator
  • 1583 postów
  • Skąd:Kielce

Napisano 09 maj 2011 - 21:19

Tutorial? Nie.

Co warto cache'ować? Wszystko. Dane z bazy, przy dużym ruchu strony statyczne.


A co z danymi, które często ulegają zmianie?

OŚWIADCZENIE: Ja, niżej podpisany, świadomy wszystkich konsekwencji tego posta postanawiam go dopuścić do użytku publicznego, albowiem bo gdyż aczkolwiek uważam, że nie wyrządzi on (znaczy: post) krzywdy nikomu innemu niźli mnie samemu (czyli autorowi posta).
-- Zepco --


#9 mck

mck

    Jestę Blogerę

  • Admin
  • 1544 postów

Napisano 09 maj 2011 - 21:31

^ Trzeba sobie odpowiedzieć na jedno ważne pytanie: jak często? :)

#10 Pedro

Pedro

    Początkujący

  • Użytkownik
  • Pip
  • 64 postów

Napisano 09 maj 2011 - 22:08


Tutorial? Nie.

Co warto cache'ować? Wszystko. Dane z bazy, przy dużym ruchu strony statyczne.


A co z danymi, które często ulegają zmianie?

Zależy jakie to dane, jak często ulegają zmianom, etc. Ale zaraz, tech cache'ować! ;)

#11 barat

barat

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 703 postów
  • Skąd:Czerniejewo/Poznań

Napisano 09 maj 2011 - 22:33

Jeśli to są dane, które ulegają zmianie po edycji przez użytkownika, to po prostu usuwać cache w momencie zapisu/zmiany ;)
Jedni aktualizują jak szaleni co chwila, a inni co kolka dni ;)
Do tego niektóre z metod cacheowania obsługują tagi - to też się może przydać przy kasowaniu :)

#12 kevin

kevin

    Młodszy Mastah

  • Użytkownik
  • PipPip
  • 207 postów

Napisano 22 luty 2013 - 07:50

Czy to normalne, że w K3.2 (i niższych wersjach, nie wiem jak w K3.3) cache nie chce zapisać pustej tablicy array? Używam helpera, który zwraca mi konfiguracje i zapis wygląda mniej więcej tak:
$cache = Cache::instance();
if ( !$data = $cache->get('ustawienia') )
{
     $data = pobieramy_ustawienia...
     // i zapisujemy do cache
}

return $data;

Tylko zauważyłem, że jeśli model zwróci pusty wynik (pustą tablice) to cache nie chce zapisać tego wyniku i cały czas zapytanie się wykonuje. Czy to tak powinno działać czy to podchodzi pod kategorie błędów? :-)




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych