Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] router i cache
Forum PHP.pl > Forum > Przedszkole
Pytam
Piszę sobie mini router na stornę. Chciałbym zastosować w nim cache czyli zrzucać do pliku wszytko co zostało wygenerowane przez php i przy kolejnej próbie połączenia odczytać zawartość z pliku. To już zrobiłem i działa idealnie, jednak nie wiem co zrobić w przypadku zmiany danych z zewnątrz, np. wysłanie formularza, jak wtedy pominąć odczyt z cache?

Sprawdzać czy zostały wysłane jakieś dane przez POST i wtedy wczytać stronę poprawnie? A co w wypadku innych danych? Jak to rozwiązać?
erix
Cytat
jednak nie wiem co zrobić w przypadku zmiany danych z zewnątrz, np. wysłanie formularza, jak wtedy pominąć odczyt z cache?

Strasznie ogólnikowe... To jest cache dla routera, czy dla zawartości?
Pytam
index.php > router (jeśli istnieje cache to zwraca cache strony/zawartość), jesli nie, wczytuje klasy od nowa. I co w przypadku gdy cache istnieje, ale wysyłane są dane z formularza? lub cokolwiek innego.
erix
To wtedy sprawdzasz, czy istnieje w cache i nie ma POST.
wNogachSpisz
Napisz jakie zadania realizuje Twoja biblioteka router. Po jedym zdaniu od myślników.
Pytam
- wczytuje się wink.gif
- pobiera reguły
- sprawdza je z URI czy pasują
- uruchamia odpowiednie klasy

miałoby być tak samo, z tą różnicą że jak zostanie zapisane cache to odczyta cache bez sprawzdania URI, reguł i uruchamiania klasy (czyli cały kod wynikowy). Jakie dane prócz post powinny jeszcze wchodzić w grę?
erix
A to my mamy znać charakter Twojej aplikacji? tongue.gif
Pytam
Tu nie chodzi o aplikacji, a sposób działania, przecież muszą być jakieś wytyczne w tym temacie. Jak to robią np różne FW? np. w CI też jest cache kodu wynikowego i jak istieje, router nie sprasza dalej tylko wczytuje to co jest. niestety kod CI jest zagmatwany i nie moge sie dokopać do klasy która za to odpowiada.
erix
Ale co zastosowanie, to się inaczej stosuje...

Nie ma uniwersalnej recepty.
Pytam
Cytat
Ale co zastosowanie, to się inaczej stosuje...

Jak?
erix
Sprecyzuj pytanie.
GośćPytam
Jak mam wczytać stronę, w wypadku wysłania do niej np POST, a gdy posiadam jej cache, tak aby w takim i tylko takim wypadku, cache było pomijane. Dobrze pokazuje tu ten obrazek http://codeigniter.com/user_guide/overview/appflow.html jak działa taki mechanizm w routerze
erix
Nie miałem za wiele do czynienia z CI, ale - bazując na innych doświadczeniach - trzeba by było napisać własną klasę routującą (nie wiem, czy w CI jest coś takiego możliwe; głośno myślę).

Generalnie dobrze by było, gdybyś pokazał, gdzie aktywujesz cache.
Pytam
w klasie router, przed pobraniem URI itd. sprawdzam czy cache istnieje, jak nie, to sprwdzam tak jak pisałem wyzej. sęk w tym że jak wyślę np. formularz, to mam taką sytuacje

1. wchodzę na stronę np. z notką bloga, pod którymi są komentarze
2. strona zapisuje się w cache
3. wchodząc raz jeszcze dostaję to co zawiera cache
4. chcąc wysłać formularz...

I tu pojawia się problem, bo router nie wykona się po swojemu nazwizując co klasy kontrolera gdzie wysyła dane forumlarza do bazy, tylko wczyta to co jest w cache.
Hmm czekaj, chyba sam wpadłem na to... po prostu skasuję cache przed wysłaniem pofmularza biggrin.gif cholera, to proste biggrin.gif hehehe wybaczcie za zamieszanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.