sql >> Databasteknik >  >> RDS >> Mysql

Cachedata i PHP SESSION, eller fråga från db varje gång?

Om din data används på alla sidor och är densamma för alla användare, skulle jag inte cachelagra den i $_SESSION (vilket innebär att ha en annan kopia av den datan för varje användare), utan med en annan mekanism, som :

  • fil
  • I minnet, med APC till exempel (om bara 1 server)
  • I minnet, med memcached, till exempel (om du har flera servrar)
  • Om din data kräver långa beräkningar eller flera DB-frågor för att erhållas, kan cachelagring av den i databasen vara en annan möjlighet (skulle innebära endast en fråga att hämta tillbaka och färre beräkningar)


Om dina uppgifter inte är samma för varje användare (vilket verkar vara fallet i din situation, eftersom du cachelagrar namn, födelsedatum, ...) :

  • Jag skulle se till att jag bara cachelagrade det som är nödvändigt
  • När du bara har ett fåtal data att cache, bör det vara helt OK att lägga in den i sessionen
  • Om du verkligen har så många användare kommer du förmodligen att ha några andra skalbarhetsproblem och kommer troligen att använda något som memcached ändå; vilket betyder att du har något annat sätt att cache;-)

Som en notis:om du gör samma fråga om och om igen, bör din DB-server cache den själv (för MySQL skulle den gå in i "frågecache "); så det skulle inte vara så illa som du tror, ​​antar jag -- även om det inte är så mycket optimerat ^^



  1. Hur hittar man vilka e-postmeddelanden som finns i samma listor?

  2. SQL Server v.Next:STRING_AGG Performance, del 2

  3. Hur massuppdatera mysql-data med en fråga?

  4. Hur man skriver ut Datagridview har en tabell i VB