![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cześć
Mam już wykonaną aplikację w Z1. Nie jest ona jakaś wielka, lecz mam dorobić do niej cacheowanie danych. Jednak nie za bardzo wiem, od czego rozpocząć i jak dorobić do już istniejącej aplikacji taką funkcjonalność. Aplikacja jest podzielona na moduły jeśli ma to znaczenie. Przeglądając różne informacje, nie znajduję przykładów z aplikacji wziętych. Tylko jakiś cache w pętach for. Znalazłem u nas na forum coś takiego: http://forum.php.pl/index.php?showtopic=122459 Ale jak w tym wypadku wygląda sprawa routingu? Czy przy cache podaje się ścieżki zendowskie np. galery/index/show/id/2 czy można swoje np. galeria/2 ? Co oczekuję od cache, tzn co chcę cacheować. Zapytania z DB oraz widoki w pewnych przypadkach i trzymać to w plikach. Np. mam galerię o ID 2, gdzie pobierane z bazy są obrazki (nazwy plików) i wyświetlane w widoku. I ten widok chciałbym cały zcacheować, ponieważ nie będą się tam tak często dane zmieniać – praktycznie w ogóle. Mogę liczyć na jakieś wskazówki? Jakich klas używać? Czy definiuje to w controlera, bootstrapie, pindex.php czy gdzie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tyle Ci powinno wystarczyć
http://framework.zend.com/manual/1.12/en/z...troduction.html |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Przeglądałem to, ale nadal nie wiem, gdzie umieścić Zend_Cache::factory. Czy w pliku boostrap, czy w pliku index.php ?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie wszystko będziesz cachował więc tam gdzie chcesz coś zcachować.
Jeżeli chcesz zcachować widok to w kontrolerze, jeżeli wynik zapytania to w modelu. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ok, troche poczytałem i spróbowałem. Coś tam się zcacheowało (IMG:style_emoticons/default/smile.gif) Zastanawiam się jednak nad poprawnością mojego rozwiązania. Chcę w każdym miejscu mieć możliwość odwołania sie do cache, więc napisałem sobie plugin:
Potem w kontrolerze tworzę nowy obiekt tego pluginu i na nim wywołuje metody load, save itd. Czy takie rozwiązanie jest dość dobre? Dodam, że w przyszłości rozbuduję ten plugin do cacheowania innych elementów albo o innych parametrach. Czy takie rozwiązanie jest akceptowalne? Czy może są lepsze? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Tylko po co angażować w to pluginy? Lepiej zainicjować cache w bootstrapie i dodać go do rejestru.
Bootstrap.php
IndexController.php
Ot i cała filozofia (IMG:style_emoticons/default/smile.gif) ps. pisane z palca, więc musisz zajrzeć do manuala |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Też myślałem o bootstrapie i chyba jednak tam przeniosę uruchamianie.
Jeszcze przeprowadzam nauko-test z cache całej strony (na razie zapisane mam jako plugin i chce cache'ować wszystkie podstrony - na wyrost też są wszystkie parametry).
A kontrolerze dla wybranej akcji robię tak:
Tworzy się plik cache, ale mogę to zrobić tylko raz! Potem pojawia mi się biała strona i przy włączonym debugowaniu mam info, że strona jest zcache'owana. Ale jak przeniosę kod z wybranej akcji do init, to (po wyczyszczeniu cache) działa bez problemów. Czym się to tak na prawdę różni (wiem, że init odpala się przed każdą akcja)? Czy jakbym chciał zdefiniować wybrane akcje do cache, to muszę robić to w tablicy frontendOptions jako regexps'y? Ten post edytował IceManSpy 15.12.2012, 23:42:48 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
To, że coś się dzieje "automatycznie" nie znaczy, że warto się tego trzymać (chyba, że nie zależy ci na kontroli)(IMG:style_emoticons/default/tongue.gif)
http://zend-framework-community.634137.n4....s-td670907.html |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ten link też znalazłem, tylko w nim jest opisany Output, dlatego go pominąłem (IMG:style_emoticons/default/smile.gif) Masz też dużą rację z kontrolą - teraz przynajmniej mogę tworzyć sobie cache o jakich chce tagach czy nazwach.
Ostatecznie robię to tak, gdzie getViewCacheManager to metoda pobierająca config - w przyszłości przerzucę ją na boostrapa:
Wielkie dzięki za rady i wskazówki (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 00:32 |