How do you force an iPad home screen bookmarked web app to refresh?
Another workaround is to add ?v=1 to your Javascript and CSS links. For example:
<link rel="stylesheet" type="text/css" media="all" href="./css/ipad.css?v=1">
<script src="./js/ipad.js?v=1"></script>
It seems one doesn't have to update the number when your file has changed, as far as I can tell. Apparently, on an iPad 2 with the latest software update installed, it is enough to just hint at something dynamic.
For our iOS webclip apps we are using the following. So far no cache problems:
1- We have one cache manifest file called 'manifest.appcache.php'
<?php
header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
header('Content-type: text/cache-manifest');
?>
CACHE MANIFEST
CACHE:
# Don't cache anything
FALLBACK:
# Nothing
NETWORK:
# Request everything from server
*
2 - In the HTML file we have:
<!DOCTYPE html>
<html lang="en" manifest="manifest.appcache.php">
<head>
...
Create a cache.manifest
that instructs it never to cache resources referenced by the main html page:
CACHE MANIFEST
# Version 1.0000
NETWORK:
*
Use it in your index.html
:
<!DOCTYPE html>
<html manifest="cache.manifest">
Now whenever you change that manifest file -- for example, by increasing the version number in that comment -- the browser will redownload index.html
also.
Ensure your page gets reloaded when the cache is updated:
<script>
function updateSite(event) {
window.location.reload();
}
window.applicationCache.addEventListener('updateready', updateSite, false);
</script>
The Safari Developer Library has good documentation.
I think I found a workaround:
The new version of the site only appears when the index.html file changes.
(the first file to be loaded)
If you leave the index.html and only change some js in other files then the site doesn't load the new version.