Aggressiv caching av genererte innholdet samtidig auth info

stemmer
7

Jeg bruker en Symfony 2 for å generere sidene mine data i en MySQL database. For de fleste innhold, brukerne må godkjennes, men selve innholdet ikke endres ofte, og trenger ikke å være tilpasset brukerne. Så hva er en god caching strategi for å unngå databasekall samtidig opprettholde den auth sjekk?

Publisert på 30/05/2011 klokken 14:01
kilden bruker
På andre språk...                            


5 svar

stemmer
1

Enkelt sagt, bruker Memcache å cache SQL resultatsett for lengre periode.

Svarte 07/07/2011 kl. 05:22
kilden bruker

stemmer
0

Jeg løste dette ved å bruke Zend_Cache inne i hurtiglager handlinger for å lagre gjengitt mal resultat. Jeg deretter opprette en ny Responseobjekt fra bufret innhold. Hvis bufferen er tom, jeg generere innhold.

Jeg tenkte på å lage en plugin som sjekker for en merknad og lagrer Response utgang automatisk, men det viste seg at jeg bare har 3-4 skjerm handlinger som er hurtiglagerbar og har svært komplekse cache ID oppretting regler, så jeg satte den caching logikk direkte inn kontrollerkoden.

Svarte 08/12/2011 kl. 14:40
kilden bruker

stemmer
0

Hvis du bruker Symfony2, bruker du Doctrine2 hvis du bruker Doctrine2, bør caching være aktivert som standard.

Velg bufferen driver for ditt formål, og det bør ikke være noe problem. Du kan også være spesielt interessert i søkeresultatet caching .

Ikke bruk Lære uten metadata og spørring cache! Læren er svært optimalisert for å arbeide med hurtigbuffere. Hoveddelene i Lære som er optimalisert for bufring er metadatatilordningen informasjonen med metadata bufferen og den DQL til SQL-konverter med spørringen buffer. Disse 2 cacher krever bare et absolutt minimum av minne, men de tungt forbedre runtime ytelsen Lære. Den anbefalte cache driver du vil bruke med Lære er APC. APC gir deg en opcode-cache (som er sterkt anbefalt uansett) og en veldig rask in-memory cache lagring som du kan bruke til metadata og spørre cacher

Svarte 19/08/2011 kl. 05:11
kilden bruker

stemmer
0

Kanskje dette være for stor endring, men følgende skjema kan være nyttig i tilfelle:

Lag flere sett med sider, en for ikke-ennå-authed brukere (la oss sette i stedet root), og andre for autentiserte brukere som skal se det samme innholdet (si, bør det to eller flere se det samme innholdet når de blir godkjent da vil vi bare lage ett sett for alle av dem), og sette det inn i katalogen under roten. Deretter danne enkle .htaccess / .htpasswd filer for hver av en slik 'for-authed-only' katalog og så det vil være webserver problem ikke skriptet.

Håper du fikk ideen. Det er uklart å si, men vil være lett å implementere.

Eksempel : si at du har lyst til å tillate bare godkjente brukere for å se siden '/topsecret.html' på nettstedet. Lag dir (/ authed), etablere HTTP-auth på den, og sette topsecret.html i dir (slik at det vil være '/authed/topsecret.html'). Nå edit '/topsecret.html' og enkelt erstatte det hovedinnhold med 'beklager, kan autentisere deg selv' linken som vil peke til '/authed/topsecret.html'.

Svarte 27/07/2011 kl. 09:52
kilden bruker

stemmer
-1

Det ser ut til at du har en rekke alternativer for caching med symfoni http://www.symfony-project.org/book/1_2/12-Caching (ikke for to, men min gjetning er ikke mye har endret seg).

Du kan sette tunge SQL-setninger i sin egen script og slå caching på for at skript

list:
  enabled:     on
  with_layout: false   # Default value
  lifetime:    86400   # Default value

Videre hvis du er sikker på at den genererte koden ikke vil endre på en stund kan du bruke symfony å fortelle brukerens nettleser ikke engang å bry serveren din for innholdet som vil føre til at siden å laste nesten instananeously for brukeren.

$this->getResponse()->addCacheControlHttpHeader('max_age=1200'); // in seconds - less than 1 year seconds

Bare sørg for at din maks alder er liten nok til at når noe endres (si en kode oppdatering) at brukeren ikke blir sittende fast med gamle siden siden det ikke er noen måte å tvinge dem til å be om at siden igjen kort for å endre url.

Svarte 24/07/2011 kl. 11:35
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more