J'ai cherché des moyens d'améliorer le référencement pour les applications angularJS hébergées sur un CDN tel qu'Amazon S3 (stockage simple, sans back-end). La plupart des solutions existantes, PhantomJS , prerender.io , seo.js etc., reposent sur un backend pour reconnaître le ?_escaped_fragment_
URL que le robot génère, puis récupère la page pertinente ailleurs. Même grunt-html-snapshot a finalement besoin de vous pour le faire, même si vous générez les pages d'instantanés à l'avance.
Cette solution repose essentiellement sur l'utilisation de cloudflare en tant que proxy inverse, ce qui semble être un gaspillage étant donné que la plupart des appareils de sécurité fournis par leur service sont totalement redondants pour un site statique. Configurer moi-même un proxy inverse comme suggéré ici semble également problématique étant donné que cela nécessiterait soit i) le routage de toutes les applications AngularJS dont j'ai besoin du code HTML statique via un serveur proxy, ce qui pourrait potentiellement nuire aux performances, ou ii) la configuration un serveur proxy distinct pour chaque application, auquel cas je peux aussi bien mettre en place un backend, ce qui n'est pas abordable à l'échelle que je travaille.
Existe-t-il un moyen de le faire ou les applications AngularJS hébergées de manière statique avec un excellent référencement sont-elles pratiquement impossibles tant que Google n'a pas mis à jour leurs robots?
(Republié à partir de StackOverflow ).
Je ne sais pas si cela fonctionnera bien, mais je ne le pense pas non plus s'il s'agit d'AngularJS et du référencement en général. Il y a très peu de preuves que cela fonctionne comme prévu.
Je suggérerais de laisser PhantomJS dans le noir, il est connu pour avoir des problèmes et n'est pas très léger. Considérant également que vous ne voulez pas écrire/configurer un backend, j'utiliserais Firefox pour utiliser une fonctionnalité géniale: Element.innerHTML , pour capturer le contenu HTML à tout moment en JavaScript et utiliser Amazone. CDN API pour télécharger le contenu sur une page HTML différente.
La seule chose à faire est d'informer le robot d'exploration d'indexer l'autre page. C’est la partie la plus délicate puisque vous ne voulez pas de back-end, vous ne pouvez donc pas utiliser l’URL ?_escaped_fragment_
comme vous l’avez dit. Je voudrais utiliser juste un relation canonique entre les pages en utilisant une balise de lien. Mais rappelez-vous, je ne suis pas complètement sûr que cela fonctionnera.