Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa Cache na plikach
Forum PHP.pl > Forum > PHP
gothye
witam

napisałem klasa do obsługi cache ,gdzie zawartość cache trzymana jest w plikach

jako że będe również cachował zapytania z SQL i nie chce aby dane z tego gdzieś niepostrzeżenie uciekły (oczywiście katalog cache jest zabezpieczony .htaccess przed odczytem i lisotwaniem z poziomu www) ale wpadłem jeszcze na pomysł szyfrowania pliku cache ( za pomocą biblioteki crypt i klucza 256bit) ,pomiary dla rozmiaru buffora 20kb są dobre i czas wynosci poniżej 0.004s  ,ciekaw jestem waszych opini i spostrzeżeń na temat używania cachowania ,niedługo umieszcze klase do wglądu dla wszystkich 

vokiel
Cache z założenia ma przyśpieszyć działanie aplikacji, buforować dane przed wysłaniem do użytkownika.
Kompletnie nie widzę sensu szyfrowania tych danych.
1. I tak wysyłasz je użytkownikowi - czyli i tak mu je pokażesz - sens szyfrowania żaden
2. Przed wysłaniem musisz je odszyfrować - dodatkowe obciążenie serwera, które niweluje zysk na samym cache

IMHO to nie ma sensu. Cache ma przyśpieszyć, a nie zwolnic, a szyfrowanie na pewno spowolni.
gothye
znam zasadę cachu ,ale dane do których użytkownik będzie miał dostęp (SQL) będzie posiadał po zalogowaniu tylko ,a jak już napisałem wyżej , dodanie do cachu,zaszyfrowanie ,odszyfrowanie i pobranie danych wielkości 20kb z cachy trwa poniżej 0.004s stosując klucz 256bit
Fifi209
Po pierwsze polecam używać gotowych i sprawdzonych rozwiązań, mi np. do gustu przypadło Cache Lite (pakiet PEAR).

Szyfrowanie nie ma sensu, skoro zablokujesz dostęp do katalogu poprzez .htaccess ze zwykłym deny from all to nikt Ci tam nie wejdzie i nie odczyta tych plików.
Pilsener
Cytat
chce aby dane z tego gdzieś niepostrzeżenie uciekły
- questionmark.gif Przecież to wszystko i tak wyświetlasz na stronie? Gdzie ma niby to uciec i w jaki sposób? To tylko statyczna zawartość, nawet jeśli ktoś ją pobierze to co mu to da? Chyba, że nie wiadomo co trzymasz w tych plikach, może loginy i hasła do bazy smile.gif

A propo gotowych rozwiązań to jest ich sporo:
http://pl.php.net/manual/pl/book.memcached.php - nigdy tego nie używałem, ale trzeba zacząć, inaczej nie będzie miał człowiek doświadczenia i nie będzie mógł porównać wad/zalet różnych rozwiązań.
ucho
Cache na plikach bardzo słabo się skaluje. Jeśli rozdzielasz jeden klucz = jeden plik to samo otwieranie kilkudziesięciu plików będzie wolniejsze niż wykonanie paru zapytań do bazy. Jeśli wszystko trzymasz w jednym pliku to procesy będą wzajemnie walczyć o dostęp do niego. Co do szyfrowania - jeśli ktoś dobrał się już do tych zaszyfrowanych plików cache to myślisz, że nie dobierze się do źródeł strony i nie wyciągnie klucza?
Fifi209
Cytat(ucho @ 15.02.2010, 13:01:36 ) *
Cache na plikach bardzo słabo się skaluje. Jeśli rozdzielasz jeden klucz = jeden plik to samo otwieranie kilkudziesięciu plików będzie wolniejsze niż wykonanie paru zapytań do bazy. Jeśli wszystko trzymasz w jednym pliku to procesy będą wzajemnie walczyć o dostęp do niego. Co do szyfrowania - jeśli ktoś dobrał się już do tych zaszyfrowanych plików cache to myślisz, że nie dobierze się do źródeł strony i nie wyciągnie klucza?


A kto normalny trzyma cache w jednym pliku? Zastanów się troszkę człowieku...
marcio
Cytat(fifi209 @ 15.02.2010, 13:04:23 ) *
A kto normalny trzyma cache w jednym pliku? Zastanów się troszkę człowieku...

Dokladnie do tego chyba uzywa sie tagow dla cache by ladnie byly pogrupowane do tego mozna cache'owac cale komponenty smile.gif
gothye
umnie cachowanie wygląda tak :

  1. $cache = new cache();
  2. // konfiguracja wstępna
  3. $cache->CacheDir = ROOT_DIR.'cache';
  4. // nadanie nazwy
  5. $cache->Load('smart'.$SID);
  6. // zapisanie do cache
  7. $cache->Save('aaa','test');






dzieki temu mogę osobno cachować stronę ,wyniki z SQL itp  a za pomocą unikatowego numeru sesji  ,cachuje osobno dane dla każdej otwartej sesji bez obawy na przeniknięcie danych 

kfx
jak juz chcesz, to cache na wielu plikach.
i do tego jakas zamotana nazwa katalogu, zeby nikt nie trafil i po problemie smile.gif
daj sobie do tego htaccess: Deny From All i request z apache'a blokniety

Cytat(gothye @ 15.02.2010, 15:09:48 ) *
umnie cachowanie wygląda tak :

  1. $cache = new cache();
  2. // konfiguracja wstępna
  3. $cache->CacheDir = ROOT_DIR.'cache';
  4. // nadanie nazwy
  5. $cache->Load('smart'.$SID);
  6. // zapisanie do cache
  7. $cache->Save('aaa','test');






dzieki temu mogę osobno cachować stronę ,wyniki z SQL itp  a za pomocą unikatowego numeru sesji  ,cachuje osobno dane dla każdej otwartej sesji bez obawy na przeniknięcie danych 



co to za cache, jak kazdy user ma swoj cache? smile.gif
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.