J'héberge un site Web qui contient plusieurs fichiers PDF actuellement dans des balises d'objet mises à jour chaque semaine. Les noms de ces fichiers PDF restent les mêmes, mais les données ont changé.
Actuellement, j'utilise :
<object id="men" data="seasons/S2223/Men2023.pdf?" type="application/pdf" width="100%" height="750px"> <p>The file could not be read in the browser <a href="seasons/S2223/Men2023.pdf?"> Click here to download</a> </p> </object>
Je l'attends avec impatience lorsque je mettrai à jour le PDF
data="seasons/S2223/Men2023.pdf?"
Lecture du dernier PDF, mais il reste le même qu'avant.
Je l'ai ajouté ? À la fin du nom du fichier, il devrait rechercher la dernière version, mais cela ne semble pas fonctionner.
Lorsque je vide le cache du navigateur, celui-ci se met à jour, mais bien sûr, cela ne fonctionne pas pour l'utilisateur.
Merci pour toute l'aide.
Dans ce contexte, le cache fait référence à l'endroit où le navigateur a chargé les données d'une URL dans le passé et en possède toujours une copie locale. Pour accélérer les choses et économiser de la bande passante, il utilise une copie locale au lieu de demander une nouvelle copie au serveur.
Si vous souhaitez que le navigateur obtienne une nouvelle copie, vous devez faire quelque chose pour lui faire penser que la copie dans le cache est mauvaise.
Chaîne de requête de suppression du cache
Vous essayez d'utiliser cette méthode mais elle ne répond pas vraiment à vos besoins et votre implémentation est cassée.
Cette technique est conçue pour les ressources qui changent rarement et sont imprévisibles, comme la feuille de style d'un site Web. (Comme vos ressources changeront chaque semaine, ce n'est pas une bonne option pour vous.)
Comment cela fonctionne, c'est qu'il modifie l'URL de la ressource à chaque fois qu'elle change. Cela signifie que l'URL ne correspond pas aux données mises en cache par le navigateur. Puisque le navigateur ne connaît pas la nouvelle URL, il doit la redemander.
Depuis que vous avez codé en dur la requête en
n=1
, elle ne change jamais, ce qui détruirait l'objet.Une approche courante consiste à définir la valeur de la requête sur l'horodatage ou la somme de contrôle du fichier. (Cela se fait généralement à l'aide de l'outil de création du site Web dans le cadre du processus de déploiement.)
En-tête de contrôle du cache
HTTP fournit un mécanisme pour indiquer au navigateur quand il doit récupérer une nouvelle copie. Il existe différents en-têtes et je vous encourage à lire ce Tutoriel de mise en cache pour les auteurs Web et les webmasters : il couvre très bien le sujet.
Étant donné que votre document expirera chaque semaine, je pense que votre meilleure approche est de définir l'en-tête
Expires
sur la ressource HTTP de l'URL du PDF.Vous pouvez régler cela par programme sur (par exemple) une heure après l'heure à laquelle une nouvelle version devrait être téléchargée.
La manière de procéder dépend du serveur HTTP et/ou des capacités de programmation côté serveur de l'hôte sur lequel PDF est déployé.