J'essaie de comprendre si je peux obtenir des navigateurs pour cacher des images avec des URL signées.
Ce que je veux, c'est générer une nouvelle URL signée pour chaque demande (même image, mais avec une signature mise à jour), mais avoir le navigateur ne pas le télécharger à chaque fois. p>
Ainsi, en supposant que les en-têtes liés au cache sont définis correctement et que toute l'URL est identique à l'exception de la chaîne de requête, existe-t-il un moyen de faire le navigateur le cache? p>
Les URL ressembleraient à quelque chose comme: p> Nous prévoyons de définir les étiquettes E-MD5Sum, alors au moins comprendre c'est la même image à ce moment-là? p> Mon autre option consiste à garder une trace de la dernière fois donnée une URL, puis commencez à en donner de nouveaux légèrement avant l'expiration des personnes âgées, mais je ' Je préfère ne pas gérer les informations de session. P> p>
3 Réponses :
Le navigateur utilisera toute l'URL à des fins de mise en cache, y compris les paramètres de la demande. Donc, si vous modifiez un paramètre de demande, il s'agira effectivement d'une nouvelle "clé" dans le cache et de téléchargera toujours une nouvelle copie de cette image. Il s'agit d'une technique populaire dans le monde de la serving de publicité - vous ajoutez un nombre aléatoire (ou l'horodatage actuel) à la fin de l'URL en tant que paramètre pour vous assurer que le navigateur remonte toujours au serveur pour effectuer une nouvelle demande. p>
La seule façon dont vous pourriez obtenir que cela fonctionne, c'est si vous pouvez créer l'URL statique - c'est-à-dire à l'aide de règles de réécrire Apache ou d'un proxy de quelque sorte. P>
Savez-vous si cela vérifiera au moins la balise électronique et ne le téléchargez plus à nouveau?
L'en-tête Etag est envoyé uniquement par le navigateur au serveur lorsqu'il trouve le fichier dans son cache (et si le fichier d'origine avait une valeur Etag). Donc, s'il ne peut pas le trouver dans son cache (ce qu'il ne sera pas si l'URL a changé), il n'y a pas de valeur Etag à envoyer dans la demande.
La règle de réécriture URL ferait à nouveau la signature S3 inutile, car le serveur Web fournirait automatiquement un lien non expiré. Ensuite, vous pouvez également marquer des fichiers dans S3 comme "public". (Ensuite, aucune signature n'est requise pour accéder aux fichiers)
J'ai exactement le même problème avec les URL signées S3. La seule solution que j'ai proposée est de faire expirer les URL le même jour. Ce n'est pas idéal mais au moins il fournira la mise en cache pendant un certain temps. P>
Par exemple, toutes les URL signées en avril, j'ai défini l'expiration du 10 mai. Toutes les URL signées en juin, je devais expirer le 10 juillet. Cela signifie que les URL signées seront identiques pour le mois entier. P>
vient de sculpter sur ce problème et a trouvé un moyen de résoudre. Voici ce que vous devez faire: P>
localStorage code> par exemple); li>
- Lorsque vous recevez l'URL img la prochaine fois, vérifiez si leur correspondance URL principale (
str1.split ('?') [0] === str2.split ('?') [0] Code> ) li>
- S'ils le font, utilisez la première comme attribut IMG
SRC CODE>. LI>
ol>
J'espère que cela aide quelqu'un. P>