2012-03-29 8 views
0

Ich habe das Caching auf Android bemerkt & Apple-Geräte können sehr intensiv sein, wir starten nächste Woche eine jquerymobile Website in Produktion und ich muss sicherstellen, dass ich die Möglichkeit habe, den Cache zu löschen von Benutzern ..Erzwingen von mobilen Geräten, um ihren Cache zu aktualisieren

Ich habe versucht, eine inkrementelle Zahl auf die Abfrage Zeichenfolge von JS, CSS-Ressourcen, wie? v = 2 usw. hinzugefügt, die Arbeit anständig zu sein scheint, aber auch, dass manchmal nicht funktioniert .. .

Hat jemand irgendwelche Ideen? Manifest?

+0

Auf welchen Browsern hat die Version Cache-Buster-Parameter fehlgeschlagen? –

Antwort

0

Ich habe immer die Cache-Busting-Abfragezeichenfolge verwendet, um zu erzwingen, dass eine neue Kopie vom Server geladen wird.

Sie können auch <HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> verwenden, aber das (in der Theorie) wird alle Zwischenspeicherung auf der Seite loswerden, nicht nur, wenn Updates auftreten.

0

Das Hinzufügen einer GET-Variablen zur Quelle Ihres Assets funktioniert für das einzelne Asset, aber wenn die gesamte Seite zwischengespeichert wird, wird der neue Variablenwert nicht gefunden und alle zwischengespeicherten Assets werden geladen.

Vielleicht können Sie die Zwischenspeicherung der Indexseite deaktivieren. Wenn Sie also die Quelle eines Assets ändern, wird es jedes Mal reflektiert, wenn ein Benutzer die Indexseite anzeigt.

Ich glaube, Sie auch nicht den Browser einen Cache-Manifest zu sagen, verwenden können, um bestimmte Vermögenswerte Cache: http://www.html5rocks.com/en/tutorials/appcache/beginner/

0

ich von Fällen gehört, in denen die Query-String-Wechsel index.js ignoriert wird v = 3, so etwas wie? index.3.js können Sie dann mit .htaccess umleiten.

Hier ist eine nette Art und Weise die H5BP diese Griffe mit .htaccess und Zeitstempel:

<IfModule mod_rewrite.c> 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L] 
</IfModule> 

Dieser leitet alle Anfragen an /path/filename.ext /path/filename.20120101.ext. Dann müssten Sie einen Zeitstempel in Ihren Dateinamen wie index.20120329.js und es würde umleiten, um index.js

Verwandte Themen