2010-10-12 12 views
0

J'utilise authlogic pour l'authentification et certaines actions nécessitent un utilisateur connecté, qui est contrôlé via un before_filter comme suit. J'utilise aussi friendly_id sur le modèle User et en interne tout ce qui existe sur le modèle User, il y a aussi des requêtes sur la table slug friendly_id. Cela entraîne au moins 3 requêtes pour certaines pages vues et cela arrive assez souvent.authlogic require user

Existe-t-il un moyen de maintenir cette fonctionnalité sans exécuter ces requêtes à chaque fois? J'utilise également memcached en tant que magasin d'objets. Est-ce une possibilité? ça marche bien avec authlogic?

def require_user 
     unless current_user 
      store_location 
      flash[:notice] = "You must be logged in to access this page" 
      redirect_to new_user_sessions_url 
      return false 
     end 
    end 

Répondre

0

Je ne m'inquiéterais pas trop. Rails est assez intelligent et mettra la requête en cache de manière à ce qu'elle ne fonctionne qu'une seule fois. Gardez un oeil sur vos fichiers journaux et voyez si vous pouvez trouver les requêtes en question, le plus probable qu'ils auront (en cache) la suggestion ajoutée que les résultats de la requête étaient encore dans le cache.

+0

Je vois quelque chose comme .. [DEBUG 12-10-2010 13:52:37] Charge utilisateur (0.5ms) SELECT * FROM 'users' OERE (' users'.'id' = '9') LIMIT 1 Cependant, aucun cache n'est ajouté, ceux-ci proviennent de mes journaux de production. – badnaam

+0

Eh bien disons qu'il ne cache pas, comme vous pouvez le voir il a fallu 0.5ms pour exécuter cette requête. Ce n'est pas comme si vous obteniez beaucoup d'amélioration de la vitesse sur ce – Maran