monde réel Problème:Rendre les applications AJAX exploitables? Comment créer un service Web simple sur Google App Engine pour produire des instantanés HTML?
Je mon application hébergé sur Heroku, qui (à ma connaissance) ne parviennent pas à offrir une solution pour la gestion d'une Headless (GUI-less) Navigateur - tels que HTMLUnit - pour générer HTML Snapshots pour que Googlebot indexe mon contenu AJAX.
Ma Solution proposée:
Si vous n'êtes pas déjà, je vous suggère de lire Google Full Specification for Making AJAX Applications Crawlable.
Imaginer que j'ai:
- une application Sinatra hébergé sur Heroku sur le domaine
http://example.com
- l'application a onglets en haut de la page TABA, Tabb et TABC
- sous chaque l'onglet est SubTab1, SubTab2, SubTab3
- onload si l'URL est
http://example.com#!tab=TabA&subtab=SubTab3
puis côté client Javascript prend lelocation.hash
et charge le contenu TabA, SubTab3 via AJAX.
Remarque: le Hash Bang (#!) Fait partie du google spec.
Je voudrais construire un simple "service web" hébergé sur Google App Engine (GAE) que:
- accepte une URL par exemple param
http://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3
(url param doit être URLEncoded) - Exécute HTMLUnit pour ouvrir
http://example.com#!tab=TabA&subtab=SubTab3
et exécuter le javascript côté client sur le serveur. - HTMLUnit renvoie le DOM une fois que tout est terminé (ou quelque chose comme 45 secondes est passé).
- Le contenu de retour peut être renvoyé via JSON/JSONP, ou une URL est renvoyée vers un fichier généré et stocké sur le serveur google app engine (pour les résultats "cachés" basés sur des fichiers) ... Si une URL vers un fichier a été retournée, vous pouvez CURL obtenir le code source (aka un instantané HTML).
Mon http://example.com
application aurait besoin de gérer l'appel à http://htmlsnapshot.appspot.com
... essentiellement:
- Catch Googlebots appel à
http://example.com/?_escaped_fragment_=tab=TabA%26subtab=SubTab3
(crawler Googlebot échappe certains caractères par exemple 26% = &). - Envoyer la demande du serveur à
http://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3
(le paramètre url doit être URLEncoded) - Rend le cliché HTML retourné au client.
- Google Indexe le contenu et nous nous réjouissons!
Je n'ai aucune expérience avec Google App Engine ou Java ou HTMLUnit.
Je pourrais être en mesure de le comprendre ... et posterai mes résultats si je fais.
Sinon, je pense que c'est une très bonne occasion pour quelqu'un d'écrire un billet de blog kick-ass qui décrit un novices, étape par étape pour la mise en place d'un service Web comme celui-ci.
Cela permettra à plus de gens de découvrir l'excellent (et gratuit!) Google App Engine. En outre, il encouragera sans aucun doute plus de gens à adopter les spécifications de Google pour le contenu AJAX explorable ... quelque chose dont nous pouvons tous bénéficier!
Comme la spécification de Google est de plus en plus acceptée, l'obstacle de la configuration d'un navigateur sans tête va envoyer de nombreux devs. Entrez maintenant avec une réponse pour la gloire et la gloire! (edit: à tout le moins je vais chanter tes louanges).
Frappez-moi sur twitter @_chrisjacob
si vous souhaitez discuter des solutions.
lecture intéressante: "Get HtmlUnit courir sur Google App Engine (GAE)" http://sourceforge.net/tracker/index.php?func= detail & aid = 2962074 & group_id = 47038 & atid = 448269 –
Voir les notes de publication de htmlunit 2.8. –
htmlunit 2.8 notes de publication: http://htmlunit.sourceforge.net/changes-report.html#a2.8 - vous avez raison, ils déclarent que le support GAE est fonctionnel (ou au moins "corrigé"). –