2011-04-19 1 views
1

Après avoir lu comment CodeIgniter gère les sessions, je suis préoccupé par l'impact sur les performances lorsque les sessions sont configurées pour être stockées et extraites de la base de données. Cela provient de la documentation de CI: "Lorsque des données de session sont disponibles dans une base de données, chaque fois qu'une session valide est trouvée dans le cookie de l'utilisateur, une requête de base de données est effectuée pour la faire correspondre."Charge de base de données lourde lors de l'utilisation de la classe de session CodeIgniter?

Donc, chaque appel AJAX, chaque fragment HTML que je demande va avoir cette surcharge? C'est potentiellement un gros problème pour les systèmes qui tentent d'évoluer!

Je l'aurais deviné que CI l'aurait implémenté mieux: inclure le hachage MD5 pour couvrir à la fois l'horodatage sessionID + lors du codage dans l'enregistrement de session. Ensuite, vérifiez uniquement la base de données pour l'enregistrement de session toutes les X minutes chaque fois que le sessionID est régénéré. Est-ce que je manque quelque chose?

+0

Les en-têtes de session sont-ils publiés avec XmlHttpRequests? –

Répondre

0

Vous pouvez faire en sorte que vos requêtes AJAX utilisent un autre contrôleur, par exemple Ajax_Controller au lieu de MY_Controller. MY_Controller chargerait la classe Session mais pas Ajax_Controller. De cette façon, lorsque vous appelez votre AJAX, il ne touche pas aux données de session et ne fait donc aucun appel erroné à la base de données qui ne soit pas nécessaire.

Si vous chargez automatiquement la classe Session, vous pouvez peut-être essayer de la décharger pour les requêtes AJAX? Je ne l'ai jamais essayé, mais il est parlé ici http://codeigniter.com/forums/viewthread/65191/#320552 puis faire quelque chose comme ça

if ($ this-> entrée-> is_ajax_request()) {// décharger session de code de classe va ici }

Questions connexes