2010-03-26 4 views
2

Je ne sais pas si je suis vraiment sur le bon forum, mais si non, dites-le moi. J'ai une page qui est codée en ASP (pas .net) qui est utilisé pour envoyer des emails. Nous avons actuellement un problème dans lequel la page semble être envoyée deux fois parfois. En vérifiant, nous avons découvert que ceux qui ont ce problème viennent d'une grande organisation, donc il a été suggéré que leur serveur pourrait mettre en cache le fichier pour une raison quelconque.Désactiver le cache de page sur une page spécifique

Je voudrais savoir, existe-t-il un moyen en HTML (ou ASP) pour empêcher cela de se produire? Ou est-ce dans IIS que nous devons mettre cela en place?

EDIT: J'ai oublié de mentionner est que parfois, le temps entre les deux mails peut être en heures, et non pas quelques secondes

Merci,

+0

Heures! Pas un détail subtil! – systempuntoout

+0

Je suis d'accord .. La chose est la plupart du temps c'est au plus 2 minutes, ce qui pourrait être expliqué en quelque sorte, mais des heures je ne peux pas. –

Répondre

1

Je ne vois pas de problème de cache ici.

La seule solution que je vois est de stocker quelque part côté serveur (db, système de fichiers) la liste des emails envoyés et de vérifier la liste avant de les envoyer.

Avec cette approche, vous serez sûr d'envoyer un seul courrier à l'adresse spécifiée en évitant le double envoi ou tout autre problème possible.

+0

Nous avons vérifié avec des clients et aucun d'entre eux n'a actualisé la page ou double-cliquez sur le bouton. Je sais que nous ne pouvons généralement pas compter sur ce genre de contribution de la part des gens, mais certains d'entre eux sont des super-utilisateurs, donc je pense que c'est fiable. De plus, cela n'arrive qu'à certains endroits, pas tous. –

+0

Oui, j'ai vu sur votre EDIT :) Pourquoi downvote ?? – systempuntoout

+0

Dunno, je ne suis pas celui qui l'a fait. –

0

Je ne vois pas comment cela pourrait avoir quelque chose à voir avec la mise en cache. Après tout, une page mise en cache contient le code html généré, et ainsi elle ne déclencherait pas une autre exécution du code qui envoie l'email.

Cependant, ma meilleure estimation est qu'il s'agit d'utilisateurs qui actualisent la page. Pour éviter cela, vous pouvez implémenter le modèle post/redirection, où après l'envoi du mail vous redirigez vers une autre page (ou la même page mais avec des paramètres de formulaire différents). De cette façon, l'utilisateur peut actualiser la page autant de fois qu'il le souhaite sans déclencher l'envoi d'un autre e-mail.

+0

Nous avons déjà vérifié cette possiblité et il semble qu'il soit réellement impossible de rafraîchir la page car lorsqu'elle est appelée, la page est lancée et redirigée vers une autre page. J'ai essayé d'actualiser cette autre page pour voir si l'email est envoyé deux fois mais ce n'est pas le cas. Une chose que j'ai oublié de mentionner est que parfois, le temps entre les deux courriers peut être en heures, pas en secondes secondes. Je vais éditer mon post –

0

Si votre problème est la mise en cache, il n'y a vraiment rien que vous pouvez faire pour empêcher une organisation de la mettre en cache.

Vous pouvez ajouter ce code pour voir si cela fait une différence:

Response.Expires = 0 
Response.Expiresabsolute = Now() - 1 
Response.AddHeader "pragma","no-cache" 
Response.AddHeader "cache-control","private" 
Response.CacheControl = "no-cache" 

Si cela ne fonctionne pas, vous pouvez avoir besoin de contacter le service informatique de cette organisation et leur demander d'ajouter une exception de la mise en cache pour votre page/site.

+0

Qu'y a-t-il avec le downvote? Au moins laisser la courtoisie de laisser un commentaire lorsque vous downvote une réponse légitime. – AaronS

Questions connexes