Maison > Questions et réponses > le corps du texte
Safari a des problèmes pour charger les anciennes vidéos You Tube lorsque vous cliquez sur le bouton Précédent. J'ai essayé d'ajouter onunload="" (mentionné ici Empêcher le cache sur le bouton retour dans Safari 5) à la balise body mais cela ne fonctionne pas dans ce cas.
Existe-t-il un moyen d'empêcher Safari de se charger à partir du cache sur une page ?
P粉5140018872024-01-22 13:43:52
Toutes ces réponses sont un peu bidouillées. Dans les navigateurs modernes (Safari), ne fonctionne que sur la solution onpageshow
,
window.onpageshow = function (event) { if (event.persisted) { window.location.reload(); } };
Mais sur les appareils lents, vous verrez parfois la vue mise en cache une fraction de seconde avant le rechargement. La bonne façon de gérer cela est de définir correctement le Cache-Control sur la réponse du serveur, comme indiqué ci-dessous
'缓存控制','无缓存,max-age=0,必须重新验证,无存储'
P粉4959559862024-01-22 09:58:12
Votre problème est causé par le back cache. Il doit enregistrer l'état complet de la page lorsque l'utilisateur s'éloigne. Lorsque l'utilisateur revient en arrière à l'aide du bouton Précédent, la page peut être chargée très rapidement à partir du cache. Ceci est différent de la mise en cache normale qui met uniquement en cache le code HTML.
Lorsque bfcache charge la page, onload
事件不会被触发。相反,您可以检查 onpageshow
事件的 persisted
attribut. Il est défini sur false lors du chargement initial de la page. Il est défini sur true lorsque la page est chargée depuis bfcache.
La solution de Kludgish est de forcer un rechargement lorsque la page est chargée depuis bfcache.
window.onpageshow = function(event) { if (event.persisted) { window.location.reload() } };
Si vous utilisez jQuery, procédez comme suit :
$(window).bind("pageshow", function(event) { if (event.originalEvent.persisted) { window.location.reload() } });