Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007

  • Upload
    eric-d

  • View
    727

  • Download
    2

Embed Size (px)

DESCRIPTION

Il est possible d'aller plus loin que les applications classiques. En profitant pleinement des capacités du navigateur cet atelier vous montrera comment améliorer les performances et modulariser l'existant. HTTP, REST et Ajax sont au menu pour une application orienté services légère, simple à modifier et avec une API partageable avec vos clients.

Citation preview

  • 1. Qui gre ? Le graphisme ? L'intgration HTML/CSS/JS ? Le code applicatif ? Le SGBD ? Le contenu ? Il manque quelque chose ....

2. Utiliser pleinement le navigateur C'est vous de le faire (dsol) Mais le navigateur travaillera pour vous HTTP, JSON, Cache, GET, Etag, 304, Ajax, PUT 3. ric Daspet http://eric.daspet.name/ 4. Cache ? Simple, connu On vite de calculer ce qui est dj connu Quelle solution ? 5. Pear:: Cache_Lite require_once('Cache/Lite/Output.php'); $opt = array( 'cacheDir' => '/tmp/', 'lifeTime' => 10 ); $cache = new Cache_Lite_Output($opt); if (!($cache->start( $id ))) { // Cache missed... making the page $cache->end(); } 6. Pear::Cache_Lite Dfauts ? 7. Pear::Cache_Lite Dfauts ? Ca ne change rien pour le visiteur C'est le visiteur qui est important Quoi faire ? 8. Utiliser HTTP Dire la page n'a pas chang depuis 2h Dire a ne changera pas pendant 1h Dire Ce contenu l tu l'as dj tlcharg 9. La page n'a pas chang Requte conditionnelle 1er tlchargement Last-Modified: hier 16h par la suite If-Not-Modified-Since: hier 16h code de retour 304 On ne retlcharge pas on ne le calcule parfois mme pas 10. La page ne changera pas Date limite de consommation Expires: aprs demain 12h Cache-Control: max-age=300 Le temps rel est-il ncessaire ? Je reviens souvent sur les mmes pages Mais uniquement pour les liens, pas le contenu 11. Dj tlcharg Requte conditionnelle (HTTP 1.1) 1er tlchargement Etag: identifiant unique par la suite If-None-Match: identifiants en cache Le plus souvent la date est prfrable 12. Solution ? Anciennement : jpcache il existe probablement des choses plus rcentes Plus simple et plus vident : Cache statique Reste regnrer le cache statique au besoin Une architecture MVC claire peut aider 13. Attention aux sessions session_start = cache-control:private donc pas de proxy, peu de cache Pas de session sur les pages publiques Ou contrle manuel du cache-control 14. Ce qu'on va faire Lien entre PHP et code client Pas vraiment de syntaxe PHP Pas vraiment de syntaxe HTML On parlera surtout d'architecture 15. Application Pendant les grves, ma socit met en place un service de bus C'est cod comme d'habitude... (vous voyez ce que je veux dire ?) 16. Je sais Plein d'erreurs Pb de scurit Mauvais code Regardez le reste C'est pour l'exercice 17. Quoi en faire ? Nous devons la rendre plus sympa lui faire supporter la charge la rendre utilisable par des appli. tierces 18. Maintenant ... Vous travaillez Ide valuation Prsentation Action Conclusion 19. Ajax Asynchronous Javascript and XML Rien voir avec PHP 20. Ajax Possibilit de faire une requte HTTP en js sans bloquer le navigateur pour modifier la page ensuite Toujours rien voir avec PHP 21. Ajax et PHP Ajax n'implique rien pour PHP Il s'agit d'une page normale XML, HTML, JSON, peu importe ... C'est mme a qui est gnial : rien changer 22. Ajax et Javascript var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { // Ici on place l'action effectuer } } xhr.open("GET", 'destination.php', true); xhr.setRequestHeader('Content-Type','x-www-form-urlencoded'); xhr.send("name=value&name=value"); 23. Pourquoi ? viter de tout recharger perdre les saisies recalculer ce qui est dj l'cran Lourd non ? 24. Pourquoi ? On tlcharge des objets indpendants et pas des pages Une chose calculer, une afficher on profite fond de notre MVC Une page classique rutilise nos parties Ajax les appels au modle sont les mmes les vues peuvent s'imbriquer on ajoute/supprime facilement des lments 25. Cache ... encore mieux On ne pouvait pas envoyer en cache cause de la personnalisation Si on tlcharge des morceaux indpendants Eux peuvent tre en cache Expiration, requtes conditionnelles, etc. 26. Le client travaille En profiter pour faire travailler le client les donnes brutes sont communes (en cache) les personnalisations sont donnes part Javascript recolle le tout Pas besoin de toucher aux pages classiques le javascript peut refaire le contrleur le modle fait le gros du travail 27. Un peu plus loin REST Interface historique de HTTP Une ressource (URI= identifiant, URL= localisation) Un verbe (GET, POST, PUT, DELETE) Des paramtres optionnels C'est le CRUD adapt HTTP oprations trs simples, coder et utiliser tout utilisable en Ajax 28. Prloading Devancez l'utilisateur Avec Ajax c'est un vrai plaisir 29. Utilisez le client Restez un maximum statique Faites la personnalisation en javascript Vous dgraderez correctement C'est pareil dans la vie relle 30. Utilisez le client Et pourquoi pas directement du XSLT ? rserver en interne 31. Encore plus REST Auto-ngociation de contenu principalement pour la langue car l'IP n'est pas une bonne solution 32. Pour les perf Compression client tous les navigateurs le supportent 33. Cookies Passez vous des sessions quand les cookies suffisent 34. OpenId Passez vous mme de l'authentification 35. Codes de retour HTTP 410, 403, 401, 301, 304, 204 .... quid ?