2010-10-28 5 views
1

J'ai une application web et je veux la faire fonctionner hors-ligne. Dans cette application, j'ai juste un formulaire et j'utilise PHP pour le soumettre. J'utilise un fichier manifest.php comme celui décrit dans http://building-iphone-apps.labs.oreilly.com/ch06.html.Comment puis-je ajouter un paramètre au fichier manifeste HTML5 pour le mode hors ligne?

Le problème est que j'ai besoin d'ajouter des paramètres du formulaire dans le manifeste, pour mettre en cache le bon fichier, par exemple le fichier welcome.php? Name = aaaa et non le welcome.php. J'ai donc besoin d'utiliser un GET pour le nom dans le manifest.php. Mais si j'ai bien compris que le fichier manifeste est créé au début avant que le formulaire ne soit envoyé, la valeur sur "nom" est vide.

Est-il possible d'ajouter ces paramètres dans mon fichier manifeste pour exécuter l'application hors ligne également?

Merci

Répondre

0

La seule façon que vous pouvez faire est de lister les fichiers avec leurs paramètres dans le manifeste, alors vous devez connaître tous les paramètres possibles à l'avance puis utilisez votre manifest.php pour les cracher out, de se retrouver avec un fichier manifeste qui ressemble à ceci:

CACHE MANIFEST 
welcome.php?name=aaaa 
welcome.php?name=aaab 
welcome.php?name=aaac 
...thousands more lines... 
welcome.php?name=zzzz 

NETWORK: 
welcome.php 

Cependant, je vous recommande fortement de ne pas le faire de cette façon si (comme on dirait) que vous souhaitez présenter une page d'accueil personnalisée à l'utilisateur. Avec cette approche, chaque utilisateur téléchargera chaque page d'accueil, même s'il lui suffit de voir l'une d'entre elles.

Il existe deux approches, je pense fonctionnera mieux:

1: Fournir des pages personnalisées

Si seule chose qui change est cette page, forcer l'utilisateur à se connecter avant d'accéder à la page welcome.php , puis utilisez une variable de session au lieu d'un paramètre de requête pour fournir la page personnalisée. Il suffit ensuite de spécifier welcome.php dans votre manifeste et chaque utilisateur mettra en cache une version personnalisée.

2: Ecrire une application en mode hors connexion

Si votre application web va disposer de données spécifiques à l'utilisateur à chaque étape que vous devez décomposer ce sont les composants d'application communs et ce sont les données de l'utilisateur, et servez-les séparément. Si votre application va faire quelque chose hors ligne, elle va le faire avec JavaScript, vous devez donc utiliser JavaScript pour mettre à jour la page dans le navigateur plutôt que de générer des pages entières du côté serveur avec PHP.

La plupart de vos pages PHP sont essentiellement des modèles que vous chargez avec des données utilisateur via JavaScript (vous pouvez toujours les remplir de façon «ancienne» pour les utilisateurs qui n'ont pas de capacités hors ligne dans le navigateur). Vous aurez au moins une page PHP qui fournit des données en réponse aux requêtes AJAX. Pour cette approche, vous devrez en apprendre davantage sur Local Storage et les différentes API JavaScript pour gérer le cache et détecter offline state. Une fois que l'utilisateur décide d'installer la version hors ligne de votre application Web, vous téléchargez toutes les données de cet utilisateur et les placez dans le stockage local, puis utilisez ces données pour mettre à jour chaque page au fur et à mesure que le user is offline. Toutes les modifications apportées doivent ensuite être synchronisées sur le serveur lorsque l'utilisateur est de nouveau en ligne.

+0

Merci beaucoup pour la réponse détaillée. J'essaierai de tester certaines de vos propositions! – novellino

0

En raison de l'applciation, le cache est chargé après la page à laquelle il fait référence. Vous devez recharger le cache par applicatonCache.update() lorsque les paramètres sont disponibles.

L'astuce pour injecter les paramètres dans le manifeste est de définir des cookies avant d'appeler update(). Votre script côté serveur reçoit les cookies et peut générer le contenu manifeste approprié.

Questions connexes