2010-09-16 5 views

Répondre

5
CACHE MANIFEST 
CACHE: 
/Offline/OfflineIndex.html 

FALLBACK: 
//Offline/OfflineIndex.html 

NETWORK: 
* 

Cela entraînera la redirection de toutes vos pages sur l'ensemble du site hors ligne lorsqu'elles sont hors ligne. Le seul problème est avec la page qui déclare le manifeste car cette page est toujours mise en cache. Cela signifie que vous ne pouvez pas déclarer le manifeste sur chaque page, car chaque page visitée sera alors mise en cache elle-même et non redirigée. Donc, ce que vous pouvez faire est de déclarer votre manifeste sur un autre fichier html (IE.Synchronize.html) puis de vérifier par défaut si votre application a été rendue disponible hors ligne en stockant un cookie ou une valeur localcache. S'il n'est pas redirigé vers synchronize.html avec le manifeste déclaré, définissez la valeur localcache et redirigez-la vers l'index.

Déconnecté AWESOMENESSSSSSSSS !!!!

+0

Ne répond pas exactement à ce que je cherchais mais reste une bonne réponse pour que d'autres puissent le lire afin de mieux comprendre le HTML5 hors-ligne. – ashishb

+0

La mise en cache du manifeste est ce qui m'a lancé dans une boucle. Cela a beaucoup aidé à clarifier. Merci – drogon

1

Il n'est pas possible d'utiliser des caractères génériques dans le manifeste du cache, au moins cela ne fonctionne pas dans tout navigateur actuel pour autant que je sache. Une approche alternative pourrait consister à générer dynamiquement votre manifeste de cache et à laisser un script générer toutes ces entrées de secours.

+0

Oui, il semble que je devrais générer dynamiquement [croissant] FALLBACK. Merci d'avoir confirmé ma peur. – ashishb

+0

@ashishb Je viens de découvrir que l'actuel Firefox 4.0 prend en charge les caractères génériques dans la section de secours. Cela ne fonctionne toujours pas dans les versions de développement Chrome ou Opera. – robertc

6

Je ferai référence à « manifest.php » au lieu de « cache.manifest », alors mon fichier php ressemble à ceci:

<?php 
    header('Content-Type: text/cache-manifest'); 
    echo "CACHE MANIFEST\n"; 

    $hashes = ""; 

    $dir = new RecursiveDirectoryIterator("."); 
    foreach(new RecursiveIteratorIterator($dir) as $file) { 
     $info = pathinfo($file); 
     if ($file->IsFile() && 
      $file != "./manifest.php" && 
      substr($file->getFilename(), 0, 1) != ".") 
     { 
      echo $file . "\n"; 
      $hashes .= md5_file($file); 
     } 
    } 

    echo "# Hash: " . md5($hashes) . "\n"; 

?> 

Le fichier hash le garder à jour de sorte que si un changement de fichiers le manifeste change aussi bien. Espérons que cela aide :)

+0

mais comment générer des entrées FALLBACK? – ashishb

+0

Il vous suffira de créer une logique dans ce script pour lister les fichiers FALLBACK (en fonction du chemin, du nom de fichier, etc.) séparément. Boucle une fois, exclure les fichiers FALLBACK. Bouclez à nouveau, n'incluez que les fichiers FALLBACK. – ggutenberg

0

Référencez votre fichier manifeste dans une iframe invisible de votre page d'index. De cette façon, votre page d'index n'est pas mise en cache car elle est normalement par défaut et vous avez un contrôle total sur vos solutions de repli ...

Pas besoin de cookies non fiables ou de localStorage!

Questions connexes