2010-07-12 5 views
0

Est-ce que ce qui suit est une bonne façon de détecter une requête AJAX et de définir une expiration de 15 minutes pour que le même GET ne nécessite aucun trafic réseau?Ruby on Rails: comment paramétrer l'expiration du contenu pendant 15 minutes s'il s'agit d'une requête AJAX

# in controller 
if request.xhr? 
    response.headers['Expires'] = (Time.now + 15.minutes).httpdate 
    response.headers['Cache-Control'] = '' # override any no-cache, must-revalidate 
end 

Mise à jour: J'ai trouvé une alternative plus courte, qui est expires_in

# in controller 
if request.xhr? 
    expires_in(15.minutes) 
end 

bien, après cela, l'en-tête devient:

Cache-Control: max-age=900, private 

qui était autrefois

Expires: Tue, 13 Jul 2010 00:59:47 GMT 

quand c'était la version antérieure. Mais notez que Cache-Control est pour HTTP/1.1 et même quelques années auparavant, il a été pris en charge par 99% des navigateurs, comme mentionné dans le livre High Performance Website.

Répondre

0

Ok, car il n'y a pas encore de réponse, je vais utiliser celui de la mise à jour ci-dessus:

if request.xhr? 
    expires_in(15.minutes) 
end 

Je l'ai essayé et il fonctionne bien.