Question

Je vais avoir un problème assez ennuyeux, et est venu avec un hack assez laid pour le faire fonctionner.

Je développe une application Hta en utilisant une base de données CouchDB (pour une utilisation interne de l'entreprise). Le problème est qu'il semble y avoir une mise en cache très agressif des requêtes de base de données, et il a été difficile de trouver des solutions. Ainsi, les données mises à jour dans la base de données juste ne monterons pas dans le navigateur, qui a toujours les résultats de la requête précédente dans son cache, jusqu'à ce que l'application entière commence à nouveau.

Oh, et CouchDB (ou son serveur mochiweb) ne permet pas les variables GET inconnues, donc la solution habituelle de annexant une sorte d'horodatage juste ne fonctionnera pas.

J'ai trouvé une sorte de solution, mais il est sacrément laid. Les solutions sont:

  • Seuls les documents ouverts avec le dernier numéro de révision (facile et agréable, ne fonctionnera pas sur les vues)
  • Utilisez apache comme proxy avant l'écoute de ports 200+, et sélectionnez un au hasard sur chaque lecture requête. (C'est le laid).

Hta accepte ajax appels à d'autres ports (peut-être même sur d'autres domaines, le comportement étrange), il fonctionne très bien, j'ai juste 1/200 chance que les nouvelles données ne monterons pas, mais qui est encore mieux que 1 / 1, je peux vivre avec ça.

Alors que je demande est, est-il une meilleure solution? Puis-je pirater le serveur mochiweb pour modifier les en-têtes de cache (et nous espérons qu'ils ne vont pas être ignoré)? Y at-il une inconnue spéciale clé « jetable » Je pourrais utiliser dans l'URL pour ajouter une chaîne aléatoire? Ou est-il un moyen de dire Hta de ne pas mettre en cache quoi que ce soit (à partir de l'application, ce qui est censé travailler sur des centaines d'ordinateurs)?

Était-ce utile?

La solution

il est toujours laid, mais un peu moins laid que votre configuration apache actuelle, mais ne peut pas vous utiliser une règle de réécriture apache pour vous permettre de définir un attribut no_cache arbitraire sur l'url? apache peut jeter si CouchDB ne le verront pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top