Firebase-tools: Utilisez l'hébergement avec prerender.io

Créé le 10 oct. 2014  ·  93Commentaires  ·  Source: firebase/firebase-tools

salut

Je me demande s'il existe un moyen d'utiliser l'hébergement Firebase en conjonction avec un service comme prerender.io?
De cette façon, il serait possible de déployer une application Web (c'est-à-dire une application angularjs) avec des capacités de référencement.

Merci

question

Commentaire le plus utile

Je voulais juste dire rapidement que nous l'avons définitivement sur notre radar. C'est important, mais il en va de même pour beaucoup d'autres choses (comme Kato l'a énuméré). Nous avons quelques idées sur d'excellents moyens de s'attaquer à ce problème, mais elles ont des dépendances dont nous devons d'abord nous débarrasser. Essayez de rester patient et sachez que c'est définitivement dans notre esprit!

Tous les 93 commentaires

Salut,

Actuellement, les règles de réécriture / redirection de Firebase Hosting ne sont pas assez détaillées pour les services de pré-rendu, mais certains de nos clients ont réussi à créer une étape de pré-rendu dans leur processus de construction pour des sites assez statiques utilisant html5 pushState. Ils pré-rendent chaque page en fonction de l'application de page unique afin que le contenu correct soit diffusé à un robot d'exploration, puis si l'utilisateur navigue vers une autre page, l'application Web prend le relais et effectue une nouvelle mise à jour sans actualisation de la page.

C'est évidemment assez compliqué et évidemment pas idéal, mais nous travaillons à rendre cela beaucoup moins problématique

J'espère que ça t'as aidé

Chris

Je me rends compte que cela ne fait que deux mois, mais y a-t-il une mise à jour à ce sujet? Puisque vous êtes la propriété de google maintenant, je suppose qu'ils veulent que les sites hébergés avec Firebase soient indexés par leur service de recherche.

Nous n'avons pas de mise à jour spécifique à ce sujet pour le moment, juste que le référencement est évidemment important pour nous et que Firebase Hosting reste pertinent pour les développeurs. J'espère avoir une mise à jour pour vous bientôt

Salut les gars! Je voulais juste savoir quel est le statut de cette mise à jour? est-ce que ça arrive bientôt? J'utilise l'hébergement Firebase et c'est génial, la seule chose qui m'inquiète est le référencement, mon site n'apparaît nulle part dans Google, j'ai également recherché des intégrations de référencement avec Firebase et je n'ai trouvé aucune solution. J'aime vraiment tout garder au même endroit, il serait donc dommage de passer à un service différent qui peut servir mes pages au moteur de recherche de Google. Ce serait une énorme amélioration puisque je sais que Firebase appartient désormais à Google. Je vous remercie!

Également toujours intéressé par ce service. Merci!

Ajouter ma voix au fil de discussion - serait génial d'avoir cette fonctionnalité!

+1

J'attends ça aussi.

Comme alternative, je cherche à utiliser https://divshot.com + firebase.

+1

En raison de l'annonce récente de la fusion DIvshot et Firebase, ce problème se pose à nouveau. Je suis en fait passé à Divshot pour utiliser à la fois les capacités personnalisées gratuites de domaine et de prerender.io. Comment Fireabse va-t-il régler ces problèmes? Allez-vous ajouter des domaines personnalisés à l'offre gratuite? Et prerender.io?

Nous recherchons des moyens d'intégrer le pré-rendu JS à Firebase Hosting, mais nous n'avons aucun projet ferme à partager pour le moment. (Note personnelle: je veux vraiment que cela se produise).

Étant donné que Firebase est d'avis que tous les sites doivent être uniquement HTTPS, nous gérons l'approvisionnement des certificats SSL au nom de nos utilisateurs. Le coût que cela implique nous empêche de pouvoir proposer un hébergement de domaine personnalisé gratuit.

Merci pour une réponse ultra rapide (jeu de mots).

Une sorte de capacité de référencement est plus que nécessaire pour les plates-formes d'hébergement d'applications Web statiques, alors j'espère juste que vous réussirez à faire fonctionner cela jusqu'à la mi-décembre, sinon beaucoup de développeurs devront passer à des fournisseurs d'hébergement de la vieille école (malheureusement moi y compris ).

La deuxième réponse est parfaitement logique et je considère qu'il suffit de sauter sur le niveau payant, c'est dommage qu'il ne vous fournisse pas la même échelle supplémentaire que vous.

100% des sites d'hébergement Firebase sont sur le CDN ultra-rapide (jeu de mots régurgité) de Fastly. Vous bénéficiez de tous les avantages du plan hautes performances de Divshot, même sur le plan gratuit (mais pas sur un domaine personnalisé). En ce qui concerne la bande passante, 10 Go finit par être un _lot_ de bande pour un site Web statique.

Je dois admettre que je n'ai pas pensé aux avantages haute performance de Divshot. Quoi qu'il en soit, il est dommage que j'aie besoin de migrer mon application et de préparer un backend (et de retarder les nouvelles fonctionnalités!), Alors que le diplôme CS me mange presque tout mon temps. Bien que mon projet ne soit pas si avancé, d'autres pourraient subir d'énormes retards, alors encore une fois, j'espère vraiment que Firebase nous aidera à devenir optimisé pour le référencement ou peut-être que Divshot retardera sa fermeture. Je comprends que ce n'est probablement pas une option, mais si certains d'entre nous migrent, ils pourraient ne jamais revenir.

Félicitations @mbleigh pour l'acquisition!

@DamodarSojka , je suis entièrement d'accord avec vous. Je suis un utilisateur payant de Divshot existant. La mise en avant est un must pour le marketing / partage de mon site Web sur Facebook. Si Firebase n'offre pas cette fonctionnalité bientôt, je devrai migrer vers d'autres services d'hébergement Web.

+1 pour la capacité de référencement

Nous payons également le client Divshot et le support Prerender est nécessaire pour nous. La prise en charge de Prerender sur Divshot n'est pas idéale (à cause de l'URL production.blabla.divshot.io après le partage) mais s'il n'y a pas du tout de prise en charge de Prerender sur Firebase, nous ne pouvons pas l'utiliser. Merci.

De même, le référencement est de la plus haute importance, que vous utilisiez prerender.io ou une autre solution comparable. Cela doit être résolu sur Firebase avant que divshot ne s'arrête.

Yup a toujours des problèmes avec le référencement

+1 - Le client Divshot payant nécessiterait le support Prerender pour migrer vers Firebase.

Completley d'accord. Firebase n'est pas un remplacement de Divshot s'il ne dispose pas de fonctionnalités de prerender. Je suis un utilisateur payant de Divshot. Avec un préavis de deux mois de la fermeture de Divshot. Dois-je travailler sur la migration vers un autre service? Dois-je passer mon temps à configurer un serveur? Ou rester concentré sur ce que je faisais? N'est-ce pas l'idée du service? Vous n'avez pas à gérer des problèmes de serveur? Veuillez expliquer si Firebase sera une option pour le 14 décembre ou devrais-je prendre mon temps pour configurer un serveur.

Messieurs, Mike a déjà déclaré, dans son intégralité, le statut de cette fonctionnalité: Nous recherchons des moyens d'intégrer le pré-rendu JS à Firebase Hosting, mais nous n'avons aucun projet ferme à partager pour le moment. (Note personnelle: je veux vraiment que cela se produise).

Il n'y a pas de calendrier. Nous le voulons autant que vous.

Vous devrez décider vous-même de ce que vous devez faire. Nous n'avons pas de feuille de route publique. Nous ne pouvons faire aucune garantie sur aucun calendrier, quel que soit le nombre de demandes ou de requêtes. Désolé, ce ne sont pas des réponses douces, mais j'espère que les réponses réalistes seront plus utiles pour votre planification.

☼, Kato

Ravi de voir que vous vous en souciez vraiment :) Merci les gars!

@mbleigh / @katowulf Une question à propos de ce plan visant à intégrer le pré - rendu JS à Firebase: en quoi le pré - rendu JS sera-t-il meilleur que le support SEO actuel proposé par Firebase?

Sur la base de cette réponse SO , Firebase fournit déjà un SEO prêt à l'emploi depuis ng-conf 2015.

Je n'ai donc pas les avantages d'essayer encore d'utiliser Prerender.io sur Firebase.

@douglascorrea pour Google SEO, les améliorations seront marginales, mais (en fait) Google n'est pas le seul robot d'exploration: sourire:

Le plus gros gain à cet égard est pour les sites qui souhaitent offrir une meilleure prise en charge des balises Facebook OpenGraph, des cartes Twitter et des moteurs de recherche autres que Google.

Merci @mbleigh , cela clarifie les choses et me fait penser que nous voulons vraiment ce soutien, ou une sorte d'alternative comme @drtriumph a dit dans son commentaire.

Je cherchais une solution, et j'ai trouvé les détails suivants qui pourraient être bons pour d'autres lecteurs:

  • En octobre 2015, Google a abandonné la recommandation d'utiliser _escaped_fragment_ et le hashbang (! #). Donc, pour Google, chaque SPA doit utiliser html5 pushstate (html5mode sur angularjs). Mais ils continueront à supporter le hashbang (! #) Et à le traduire en fragment échappé pendant un certain temps.
  • Facebook et probablement d'autres robots d'exploration ont encore besoin de escape_fragment, le hashbang de traduction automatique de Facebook en notation _escaped_fragment. Et probablement d'autres robots d'exploration font de même puisque c'était la recommandation précédente de Google.
  • Puisque Firebase ne prend pas encore en charge les redirections basées sur User-Agent, notre espoir reste que les robots d'exploration traduiront hasbangs (! #) En escape_fragament comme ceci:
    Si vos URL ressemblent à ceci:
    http://www.example.com/#!/user/1
    Ensuite, accédez à vos URL comme ceci:
    http://www.example.com/?_escaped_fragment_=/user/1

Donc, pendant un certain temps, une idée pour comprendre cela pourrait être la suivante:

  • N'utilisez pas html5 pushstate (mode html5 sur Angular) et utilisez plutôt hashbang (! #)
  • Utilisez prerender.io pour créer une version statique / mise en cache de chaque page que vous voulez dans votre application (comme le processus de prerender normal).
  • Développez un plugin qui stocke cette version mise en cache dans une structure de dossiers commençant par le dossier ?_escaped_fragment_= et créez des dossiers comme:
    Si vos URL ressemblent à ceci:
    http://www.example.com/#!/user/1
    Le dossier généré sera
    ?_escaped_fragment_= +- /user +- /1

Où le fichier 1 sera le fichier html réel.

  • Déployez ce dossier dans votre dossier racine Firebase à l'aide de firebase-tools (ce processus pourrait être automatisé dans une tâche cron ou quelque chose comme ça).

Comment je pense que cela fonctionnera:

  • Lorsqu'un robot d'exploration voit votre URL de hachage, il essaie d'atteindre l'URL ?_escaped_fragment_= . Comme nous avons des fichiers HTML réels sur ces dossiers, le Firebase servira alors et ne redirigera pas vers index.html donc le HTML lu par le robot d'exploration sera la version mise en cache et non AngularJS.

Pour y parvenir, nous devons créer une tâche planifiée qui exécute le prerender pour toutes les pages, enregistre ce dossier et effectue le déploiement de Firebase.

Comme le déploiement de Firebase ne prend pas en charge le déploiement partiel (sync ou incrémentiel), nous devons conserver une copie mise à jour de notre déploiement sur le serveur qui sera responsable de ce processus.

Je vais essayer de configurer cela et je vous ferai savoir si cela fonctionne.

Pouvez-vous nous permettre de définir "X-Prerender-Token" comme nous pouvons le faire avec d'autres clés d'en-tête ???
https://www.firebase.com/docs/hosting/guide/full-config.html
https://prerender.io/install-token

+1

@ srk9 veuillez soumettre un problème distinct plutôt que de réutiliser ce fil.

Pourquoi ce problème est-il clos? Je ne vois pas de solution publiée.

@douglascorrea , que s'est-il passé avec votre idée?

Merci,
-- RÉ

Salut @bethuneco , désolé de ne pas avoir publié le résultat ici.

En fait, j'étais sur le point d'écrire un article mais je me rends compte que cette solution consistera en beaucoup de "machinerie" pour la faire fonctionner en production, et je ne me sentais pas à l'aise de la "recommander" car je ne sais pas comment il se comportera à grande échelle.

Mais fondamentalement, comme je l'ai décrit précédemment, j'ai besoin d'un serveur de «déploiement / pré-rendu» qui, pour chaque déploiement, prérend / supprime toutes les pages et stocke le HTML résultant dans les dossiers décrits ci-dessus (/? _ Escaped_framgment_ / xxxx). Ces html "réels / physiques" seront nos pages "pré-rendues".

Ainsi, chaque fois qu'un robot d'exploration google / facebook / twitter va sur notre page et demande le "fragment échappé" via le préfixe "? _Escaped_fragment", il pointera en fait vers un vrai dossier avec de vrais HTML alors, ces HTML seront indexés.
Lorsqu'un utilisateur réel accède à l'application, il n'utilise pas? _Escaped_fragment, il recevra donc la page dynamique.

Le problème est que cette "solution" est que nous devons continuer à générer des HTML pour chaque page ou une page supplémentaire. Par exemple, si votre application est un simple CMS, pour chaque nouvel article / article / page, vous devrez exécuter le processus pour générer la nouvelle page HTML. Mais le problème s'aggravera lorsque nous parlons d'un réseau social dynamique par exemple, où chaque utilisateur peut générer des centaines de pages "prérendables", alors votre robot prérendu / interne devrait fonctionner tout le temps. Et cela, dans un monde réel peut être un bouchon.

C'est une solution très "astucieuse" qui pourrait fonctionner pour les petites applications, mais pas pour les vraies grandes applications, car nous générons en fait des HTML pour être là lorsque les robots d'exploration se déplacent et ne redirigons pas automatiquement les robots vers notre service de pré-rendu qui le rendra en ligne (comme un processus normal de pré-soumission est).

Donc, à présent, nous devrions utiliser un serveur Nginx comme serveur statique pour pouvoir effectuer un prérendu, ou utiliser un concurrent Divshot comme https://www.netlify.com/ qui fournit Prerender prêt à l'emploi pour les applications à page unique .

@douglascorrea ,

Merci pour cette explication détaillée. Vous êtes la première personne à mentionner Netlify, alors je vais m'y intéresser.

Vous avez raison de dire que tout pré-rendu ne convient que pour les petits sites. Heureusement, mon application est assez petite (maximum d'environ 1200 pages), donc cela pourrait fonctionner.

La solution la plus simple (et celle que Google évite) consiste à pré-afficher Javascript et à diffuser du HTML lorsque des agents utilisateurs de robots sont détectés. Google a déjà démontré le rendu en dehors du navigateur, ce n'est donc pas techniquement difficile. C'est stratégiquement difficile pour eux, car cela semble aider un concurrent dans le secteur de la publicité.

Si quelque chose fonctionne, je publierai une mise à jour ici.

Permettez-moi de clarifier ici tous ceux qui pourraient être confus:

Firebase Hosting prend-il en charge le prérendu JS sur le serveur? Non, ce n'est pas le cas. Le pré-rendu côté serveur est quelque chose que nous aimerions prendre en charge et qui fait partie de notre feuille de route à long terme, mais nous n'avons pas de dates ou de délais spécifiques à annoncer pour le moment. Nous savons que c'est un problème, en particulier pour ceux qui utilisent le partage Facebook ou les cartes Twitter, et nous espérons pouvoir en partager davantage à l'avenir.

Ne pouvez-vous pas simplement soutenir par exemple X-Prerender-Token ? Non, cela ne fonctionnera pas. Le pré-rendu doit servir le _ contenu prérendu réel_ à l'URL ?_escaped_fragment_= , ce qui signifie que ce n'est pas seulement l'en-tête mais le contenu que le serveur doit connaître et gérer correctement. Il n'y a pas de solution demi-mesure autant que nous l'aurions souhaité.

Quel genre de pré-rendu est possible? Le seul type de "pré-rendu" réel que vous puissiez faire pour le moment est la compilation statique de sites. Habituellement, cela se fait avec quelque chose comme Jekyll, mais il est certainement possible d'utiliser un navigateur sans tête localement pour «prérendre» un site plus dynamique. Vous devez rendre chaque URL de manière exhaustive, puis la déployer, ce n'est donc pas un cas d'utilisation fantastique pour le moment. Notez également que créer des noms de fichiers contenant ?_escaped_fragment_ n'est _pas_ possible, car le CDN supprime les paramètres de requête et ce n'est généralement pas un cas d'utilisation pris en charge.

Est-ce une sorte de stratégie Google pour empêcher les autres robots d'exploration de fonctionner? Non, absolument pas. Nous souhaitons vivement soutenir les avantages apportés par le pré-rendu à Firebase Hosting. Ce n'est qu'une question de temps et de ressources.

J'ai dû passer de l'hébergement Firebase en raison des balises de médias sociaux / problème de référencement alternatif. C'est un facteur décisif lorsque des non-techniciens remarquent que nous n'avons pas de belles images sur nos liens comme tout le monde sur Internet.

Vous pouvez prerender avec phantomjs et middleware prerender. C'est open source et fonctionne très bien, mais je suis allé avec prerender.io pour éviter le travail des opérations. C'est un peu lent à la première demande, mais vous pouvez mettre en cache des pages en demandant de manière préventive chaque page.

C'est bien de demander aussi toutes les pages, car vous pouvez alors exécuter quelques tests dessus, analyser le html pour vous assurer que les balises et le contenu sont correctement rendus.

Il y a une énorme mise en garde. Prerender ne fonctionne pas avec les données Firebase en direct. Comment ça pourrait? Les données Firebase sont en temps réel, la connexion est persistante. Prerender est unique, la connexion est fermée. Il n'y a aucun moyen de savoir quand la page a terminé le rendu, car vous ne pouvez pas compter les demandes.

J'ai eu quelques idées pour résoudre ce problème:

  1. Faites une demande GET avec chaque abonnement .on("value") firebase. Ignorez l'abonnement lorsqu'il s'agit d'une demande de prérendu. Ignorez la requête GET lorsqu'il s'agit d'un utilisateur normal. Cela ne fonctionnera pas pour les événements .on("child_*") .
  2. Définissez l'indicateur de prérendu global sur false en haut de votre fichier d'entrée principal, puis pour chaque composant de page, définissez l'indicateur sur true une fois les données chargées. Avec une conception appropriée, il y a généralement un _ état de chargement_ et un _ état d'erreur_ et un _ état de réussite_ donc dans la méthode d'assistance d'état d'erreur / réussite, définissez l'indicateur sur true .

C'est pénible, mais seules quelques pages dynamiques ne s'affichent pas correctement et nécessitent un traitement spécial. Je pense toujours que les avantages statiques l'emportent sur les coûts.

@mbleigh attend avec impatience ce que vous proposez à l'avenir. Avec tout, je suis sûr que rejoindre google est un pas en arrière, deux pas en avant.

J'espère vraiment une solution de contournement. La seule raison pour laquelle j'ai besoin de backend est aussi les cartes Twitter et les opengraphes. Bien sûr, le backend offre d'autres avantages pour les applications à page unique, tels que le rendu isomorphe, mais c'est tout simplement agréable à avoir. Les balises Twitter et OG sont importantes pour toute application à partager.

Pourrait-il y avoir une sorte de règle de type réécriture qui ordonnerait au backend Firebase de servir tel ou tel objet / html à partir de la base de données?

Un tel objet peut être préparé à l'avance, car chaque partage commence à partir de la visite de l'url ou du passage d'un bouton Partager en premier.

bump .. J'ai juste été étonné par Firebase et j'ai ensuite réalisé que je ne pouvais pas l'utiliser en lisant ces commentaires ..
Comme j'ai également besoin d'un service similaire, Prerender fonctionne. Alors, quel est le développement à ce sujet?

Rassemblez-le Google! Vous êtes un moteur de recherche gratuit !! :en riant:

Sérieusement. C'est tellement important. C'est peut-être la chose la plus importante de tous les temps.

Je sais que c'était une plaisanterie, mais pour faire une remarque, cette remarque serait-elle dirigée vers la recherche Google ou Google Firebase? Un seul d'entre eux est un moteur de recherche et un seul d'entre eux fournit Firebase Hosting (et la précompilation des pages Web n'est pas exactement du ressort de l'un ou l'autre, bien qu'une valeur ajoutée claire pour l'hébergement fonctionne mieux avec des outils qui fournissent cela).

Sur une note d'ordre administratif connexe, il n'est pas non plus lié aux outils Firebase (c'est-à-dire à ce suivi des problèmes OSS). Je veillerai à ce que votre vote soit ajouté à la discussion sur les priorités; la liste de diffusion est probablement le meilleur endroit pour contacter les demandes de fonctionnalités principales à l'avenir.

Plus important encore, nous ne l'avons pas oublié. C'est toujours très important pour nous. Un peu moins important que l'intégration avec Google Cloud Functions et fournir des informations solides via Analytics, Crash Reporting et Test Labs, mais toujours important.

J'y reviendrai lors de la prochaine discussion des priorités. Nous apprécions vraiment que vous ajoutiez votre voix aux commentaires. ☼☼☼

merci pour vos efforts sur firebase @katowulf !!
C'est la seule chose qui m'empêche d'utiliser Firebase comme "hôte" pour mes applications ng1.

Vous n'êtes pas seul ici. D'autres ont rencontré la même limitation. Notez que puisque Google peut désormais indexer le contenu généré par JavaScript et qu'il existe des dispositions spéciales pour l'indexation du contenu Firebase, les données Firebase non authentifiées chargées dans vos pages devraient déjà être indexées. Mais le support complet du pré-compilateur est sur le radar.

@katowulf juste comme tête haute (si vous ne le saviez pas ou ne l'aviez pas déjà vu), mais le principal problème n'est pas le robot d'exploration de Google. Je pense que les gens savent déjà que s'ils utilisent quelque chose comme Prerender. Ce sont les autres robots comme par exemple LinkedIn, Facebook, Twitter et plus qui ne sont pas satisfaits. Ils veulent du contenu statique

@samvloeberghs Je pense cependant que les implications de Google fournissant ce support sont que d'autres suivront probablement. J'avais donc l'intention de laisser entendre que c'est un pas dans la bonne direction pour généraliser ce phénomène (et que cela fonctionne au moins avec Google aujourd'hui).

Il est peu probable que FB / LinkedIn / Twitter suive la capacité de Google à avancer rapidement comme nous le souhaiterions. Il y aura toujours un acteur majeur derrière, et nous ne pouvons tout simplement pas l'ignorer. D'autre part, Google résout le problème en travaillant sur NG2, qui comportera une compilation côté serveur à l'aide d'Angular Universal :) 👍

Angular à la rescousse! Attendez, dites-vous que l'apprentissage automatique ne résoudra pas tout cela?

Pour offrir mes 2 cents, je constate que les clients semblent valoriser les cartes de réseaux sociaux au moins autant que le référencement. Parlant de projets récents, Twitter / Facebook a été le principal moyen de promotion des marques en partageant des liens vers leur site Web.

Évidemment, le référencement est toujours essentiel, mais l'attaque des cartes de médias sociaux serait-elle une solution plus simple / à court terme? Puisque les cartes Web ne sont que des balises meta, pouvez-vous définir la structure dans firebase.json (similaire aux règles de sécurité)? Firebase pourrait alors injecter les bonnes balises meta pour les robots d'exploration de Twitter / Facebook, même si je suis sûr que ce n'est pas si simple 😄.

Quoi qu'il en soit, merci beaucoup pour l'excellent travail et le soutien de la communauté. Dans l'attente de certaines des fonctionnalités les plus intéressantes de Firebase (fonctions cloud 👍!).

@katowulf , mon commentaire était plus que tout autre chose ... vous faites un travail incroyable! Je dirige davantage ma plaisanterie vers Google dans son ensemble. Cependant, je crois que Firebase est la nouvelle * division Google qui devrait posséder toute cette question "SPA / PWA - SEO page rendering".

Mes pensées à ce sujet sont ...

Quels que soient les produits que Google commercialise dans le monde, ils doivent fonctionner parfaitement avec toutes les plates-formes que nous utilisons aujourd'hui et être des exemples brillants qui fonctionnent et reflètent son produit original, la recherche Google.

Les SPA existent depuis un petit moment maintenant..Google en a 2 [Angular] et [Polymer]. Leur implémentation SEO (Meta Tags / OpenGraph / Schema) est une Blackbox majeure (sauf si vous êtes un ninja backend). C'était une excellente nouvelle que Google Search ait commencé à traiter JS, mais ce n'est certainement que la moitié de la bataille (peut-être moins).

Firebase, étant un backend en tant que service (BaaS) semble être le nouveau * groupe Google parfait pour vraiment fluidifier le rendu de toute la page SPA. Je sais que vous y arriverez, mais je pense que cela devrait être une fonctionnalité critique / prioritaire.

Imaginez lire ce titre ...

FIREBASE PRÉSENTE ...
Nouveau et amélioré SEO pour toutes les applications à page unique (SPA) et les applications Web progressives (PWA) hors de la boîte!

Les développeurs afflueraient: +1:

Je voulais juste dire rapidement que nous l'avons définitivement sur notre radar. C'est important, mais il en va de même pour beaucoup d'autres choses (comme Kato l'a énuméré). Nous avons quelques idées sur d'excellents moyens de s'attaquer à ce problème, mais elles ont des dépendances dont nous devons d'abord nous débarrasser. Essayez de rester patient et sachez que c'est définitivement dans notre esprit!

Eh bien, c'est décevant. Je me retrouve maintenant à la recherche d'alternatives Firebase ...

Cela fait presque 3 ans ...

Une mise à jour pour ceci.. ?

cela ne devrait-il pas fonctionner maintenant que Firebase possède divshot? mettre à jour PLZ!

Nous sommes bien conscients du désir de ce type de fonctionnalité, et c'est une priorité pour nous de fournir de meilleures solutions ici. Je n'ai toujours pas de calendrier à annoncer, mais nous ne vous oublions pas.

+1

:( :( :(

Nous sommes arrivés à une conclusion similaire. Qu'avez-vous vu d'autre? ;)

J'utilise simplement Firebase Functions comme point de terminaison de mon lien de partage, puis je redirige avec JavaScript un lien.

Vous l'avez peut-être vu ou non, mais Cloud Functions est désormais intégré à Firebase Hosting !!!

Cela peut être considéré comme notre solution canonique pour le rendu côté serveur avec Firebase Hosting. Prendre plaisir!

@mbleigh OK donc si j'ai un fichier d'en-tête global avec des métadonnées telles que ci-dessous, à l'heure actuelle, cela n'est pas répliqué dans l'interface. Si j'installe les fonctions Cloud, est-ce que c'est tout ce dont j'ai besoin pour activer cette fonctionnalité.

<meta name="description" content="{{ pageDescription }}">

Génial, merci pour la mise à jour.

Le 17 mai 2017 à 17 h 39, "Michael Bleigh" [email protected] a écrit:

Vous avez peut-être vu cela ou non, mais Cloud Functions est maintenant intégré
avec Firebase Hosting https://firebase.google.com/docs/hosting/functions
!!!

Cela peut être considéré comme notre solution canonique au rendu côté serveur
avec Firebase Hosting. Prendre plaisir!

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-302268864 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AX5XbtWCdygdw4ozixK5_XcL2Dlznp4Jks5r65M-gaJpZM4CtPYG
.

Je me rends compte que ce n'est peut-être pas le meilleur problème pour ces commentaires, mais la recherche sur Google de mes problèmes m'y a conduit et il semble y avoir une discussion active, alors pardonnez-moi!

Ce que j'aimerais voir pour résoudre le problème du rendu des modèles de graphiques ouverts pour les sites sociaux dans les SPA hébergés sur Firebase - c'est la possibilité d'équilibrer la charge via l'agent utilisateur.

J'aimerais pouvoir utiliser les fonctions du cloud pour extraire certaines données de modèle de Memcache / cloudsql et rendre les balises de modèle sur la plate-forme sociale demandeuse, mais revenir à l'hébergement statique pour tous les autres clients. Ensuite, nous n'aurions pas besoin d'un rendu complet côté serveur pour toutes les demandes.

@cdharris Totalement, ATM, réécriture de toute la demande vers une fonction que j'ai essayé d'utiliser window.location pour effectuer la redirection supplémentaire (pour le client / visiteur) vers l'hébergement statique, pour mes besoins de référencement cela n'a pas fonctionné, peut-être à des fins sociales, il le ferait.

@mbleigh existe-t-il une option pour réécrire la demande des robots / réseaux sociaux en les différenciant des clients / visiteurs? J'ai testé avec _escaped_fragment_ parmi d'autres expressions glob ... Rien = / Merci d'avance

Prendre la décision de retour dans une fonction Firebase peut fonctionner. On peut dire: la demande vient-elle de Facebot? Puis renvoyez ces balises graphiques ouvertes. Sinon, renvoyez l'index.html. Mais comment renvoyer le darn index.html à partir d'une fonction Firebase?

fs.readFileSync ('./ index.htm')

Le 13 septembre 2017 à 04h34, "Birowsky" [email protected] a écrit:

Prendre la décision de contenu dans une fonction Firebase peut fonctionner. Nous pouvons dire:
la demande vient-elle de Facebot? Puis renvoyez ces balises graphiques ouvertes. Si non,
renvoie le fichier index.html. Mais comment puis-je renvoyer le darn index.html à partir d'un
fonction Firebase?

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329140134 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AX5XbrXQNbVMhRmeZQTbx3Z3vi0c1HXTks5sh728gaJpZM4CtPYG
.

@megamindbrian est-il sous-entendu que les fonctions ont accès aux fichiers hébergés? Est-ce documenté quelque part? Merci quand même!

Oui. C'est comme ça que je me souviens l'avoir utilisé, bonne question que j'essaie de trouver des documents.

Le 13 septembre 2017 à 07h09, "Birowsky" [email protected] a écrit:

@megamindbrian https://github.com/megamindbrian est-il implicite que le
les fonctions ont accès aux fichiers hébergés? Est-ce documenté quelque part?
Merci, en tout cas!

-
Vous recevez cela parce que vous avez été mentionné.

Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

Ici un
https://stackoverflow.com/questions/42960506/how-can-i-read-and-write-to-firebase-storage-from-within-cloud-functions-for-fir

Le 13 septembre 2017 à 07h09, "Birowsky" [email protected] a écrit:

@megamindbrian https://github.com/megamindbrian est-il implicite que le
les fonctions ont accès aux fichiers hébergés? Est-ce documenté quelque part?
Merci, en tout cas!

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

Celui-ci utilise un répertoire temporaire mais je pense qu'il fonctionne également avec des fichiers
vous avez téléchargé avec votre projet. Cela pourrait être immuable, c'est pourquoi
l'exemple décharge le fichier pour le sauvegarder ailleurs
https://firebase.google.com/docs/storage/extend-with-functions

Le 13 septembre 2017 à 07h12, "Brian Cullinan" [email protected] a écrit:

Ici un https://stackoverflow.com/questions/42960506/how-can-i-
lecture-et-écriture-vers-Firebase-Storage-from-within-cloud-functions-for-fir

Le 13 septembre 2017 à 07h09, "Birowsky" [email protected] a écrit:

@megamindbrian https://github.com/megamindbrian est-il implicite que le
les fonctions ont accès aux fichiers hébergés? Est-ce documenté quelque part?
Merci, en tout cas!

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

Désolé, je ne vois toujours pas une introduction correcte de la façon dont les fonctions sont conceptuellement connectées aux fichiers hébergés. Si vous voulez expliquer, j'ai quelques points pour vous: https://stackoverflow.com/q/46192570/592641

Je me voyais répondre à cela avec des exemples de code, mais ce n'était pas clair
qu'à partir de votre fonction, vous pouvez répondre avec le contenu d'un fichier dans
votre projet? Ce n'est pas une redirection.
Je vais chercher un peu plus de code.

Le 13 septembre 2017 à 07h18, "Birowsky" [email protected] a écrit:

Désolé, je ne vois toujours pas une introduction correcte de la façon dont les fonctions sont
conceptuellement connecté aux fichiers hébergés. Si tu veux expliquer, j'ai
quelques points pour vous: https://stackoverflow.com/q/46192570/592641

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329182385 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AX5XbnCSoaKUuVKUnfha5A-4K-p76kZ3ks5sh-QygaJpZM4CtPYG
.

@megamindbrian J'ai juste essayé fs.readFileSync('./index.html') mais malheureusement, le fichier n'est pas là. J'espérais également trouver les fichiers hébergés dans un seau de stockage généré implicitement, pas de chance. Comment procéderiez-vous?

Si vous imbriquez votre répertoire Hosting public dans votre répertoire functions , il y sera disponible.

@Birowsky Yup, voici comment je lis un fichier à partir d'une fonction cloud, par exemple index.js:

const page = fs.readFileSync(__dirname + '/facebook-meta.html').toString();

Mais si la disposition de votre projet est:

project/
project/src (<- actual source of app)
project/functions ( <- firebase functions)
project/dist (<- build output)

Vous devrez copier les fichiers concernés de / dist vers / functions

Ce numéro a presque 3 ans (jusqu'à présent) et toujours pas de chance à ce stade ????

Cela signifie probablement que Google abandonnera Firebase au milieu de la prise en charge de tous
nos applis.

Notre solution officielle pour cette classe de problèmes est d'utiliser Cloud Functions
pour effectuer un rendu côté serveur pour le contenu qui doit être visible en statique
robots d'exploration:

https://firebase.google.com/docs/hosting/functions

Il s'agit d'une solution plus robuste et généralisée qui permet toutes sortes de
des choses intéressantes!

Si vous pensez qu'il manque encore quelque chose, veuillez nous en informer
un cas d'utilisation détaillé afin que nous puissions réfléchir à la manière de l'aborder! :)

Le jeu.14 sept. 2017, 15:57 Brian Cullinan [email protected]
a écrit:

Cela signifie probablement que Google abandonne Firebase au milieu de la prise en charge de tous
nos applis.

Le jeu.14 septembre 2017 à 15:52, tofanelli [email protected]
a écrit:

Ce numéro a presque 3 ans (jusqu'à présent) et toujours pas de chance à ce stade ????

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
<
https://github.com/firebase/firebase-tools/issues/33#issuecomment -329630338
,
ou couper le fil
<
https://github.com/notifications/unsubscribe-auth/AX5XbhBSDSl6TStSv7M02Dx0brb9MOPbks5sia44gaJpZM4CtPYG

.

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329631266 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AAAD_iI6L-yu3RTECI88a2y_ZOzIxdDQks5sia9rgaJpZM4CtPYG
.

@mbleigh Pouvez-vous encore utiliser les fonctions cloud à la racine d'un domaine Firebase?

Oui, si je vous comprends bien. Avez-vous déjà eu des problèmes?

Le jeu.14 sept. 2017, 18:38 Brian Cullinan [email protected]
a écrit:

@mbleigh https://github.com/mbleigh Pouvez-vous utiliser les fonctions cloud sur un
répertoire racine de firebase encore?

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329653711 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AAAD_g7BV3TMM_5nVX92_-3ai_mZHfHBks5sidUvgaJpZM4CtPYG
.

@mbleigh

C'est une solution plus robuste et généralisée qui permet toutes sortes de choses sympas!

Le SSR rend notre système plus complexe 😢
Je pense que le pré-rendu est plus cool pas toujours mais souvent 💡
par exemple Facebook OGP, Twitter Cards, SEO pour non-Google

@mbleigh @megamindbrian Merci pour vos messages. J'ai fait en sorte que mon hébergement dirige toutes les demandes vers ma fonction et la réponse index.html qui est hébergée dans functions/build/index.html aux clients. Mais je ne sais pas comment confirmer qu'une demande provient de FaceBot? J'ai essayé d'utiliser les outils de débogage de Facebook pour accéder à l'URL de mon site Web, je supposais que la fonction cloud serait déclenchée, mais ce n'était pas le cas. Je ne suis pas familier avec le développement back-end, pouvez-vous me donner un indice? Merci.

Lorsque vous utilisez l'outil Facebook, assurez-vous d'utiliser le bouton qui lit quelque chose
comme "Récupérer une nouvelle copie", près de l'aperçu.

Le mar 17 octobre 2017 à 8 h 29, Jude [email protected] a écrit:

@mbleigh https://github.com/mbleigh @megamindbrian
https://github.com/megamindbrian Merci pour vos messages. j'ai
fait mon hébergement en dirigeant toutes les demandes vers ma fonction et ma réponse
index.html qui est hébergé dans functions / build / index.html aux clients. Mais
Je ne sais pas comment confirmer qu'une demande provient de FaceBot? j'ai essayé
en utilisant les outils de débogage de Facebook pour accéder à l'URL de mon site Web, j'ai supposé que le
la fonction cloud serait déclenchée, mais ce n'était pas le cas. Je ne connais pas
développement back-end, pouvez-vous me donner un indice? Merci.

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-337266581 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AX5XbrCQ3mowcUnJjWYWsaiScoN1y4l0ks5stMfcgaJpZM4CtPYG
.

-
AVIS DE CONFIDENTIALITÉ: Le contenu de ce message électronique et de tout
les pièces jointes sont destinées uniquement au (x) destinataire (s) et peuvent contenir
informations confidentielles et / ou privilégiées et peuvent être légalement protégées
de la divulgation. Il est ensuite partagé avec des entreprises technologiques, des bots, des hackers,
agences gouvernementales et commerçants. La sécurité de ce message est nulle,
et il peut être partagé sur Instagram à tout moment. Si cela vous convient,
répond s'il te plait. Il n'y a vraiment aucune sécurité ou confidentialité nulle part. Si
vous n'êtes pas d'accord, vous voudrez peut-être aller camper et parler aux gens en face à face
comme autrefois.

Y a-t-il quelque chose dans vos journaux Firebase comme "L'exécution de la fonction a commencé"?

Le mar 17 octobre 2017 à 8 h 37, Brian Cullinan [email protected]
a écrit:

Lorsque vous utilisez l'outil Facebook, assurez-vous d'utiliser le bouton qui lit
quelque chose comme "Récupérer une nouvelle copie", près de l'aperçu.

Le mar 17 octobre 2017 à 8 h 29, Jude [email protected] a écrit:

@mbleigh https://github.com/mbleigh @megamindbrian
https://github.com/megamindbrian Merci pour vos messages. j'ai
fait mon hébergement en dirigeant toutes les demandes vers ma fonction et ma réponse
index.html qui est hébergé dans functions / build / index.html aux clients. Mais
Je ne sais pas comment confirmer qu'une demande provient de FaceBot? j'ai essayé
en utilisant les outils de débogage de Facebook pour accéder à l'URL de mon site Web, j'ai supposé que le
la fonction cloud serait déclenchée, mais ce n'était pas le cas. Je ne connais pas
développement back-end, pouvez-vous me donner un indice? Merci.

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-337266581 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AX5XbrCQ3mowcUnJjWYWsaiScoN1y4l0ks5stMfcgaJpZM4CtPYG
.

-
AVIS DE CONFIDENTIALITÉ: Le contenu de ce message électronique et de tout
les pièces jointes sont destinées uniquement au (x) destinataire (s) et peuvent contenir
informations confidentielles et / ou privilégiées et peuvent être légalement protégées
de la divulgation. Il est ensuite partagé avec des entreprises technologiques, des bots, des hackers,
agences gouvernementales et commerçants. La sécurité de ce message est nulle,
et il peut être partagé sur Instagram à tout moment. Si cela vous convient,
répond s'il te plait. Il n'y a vraiment aucune sécurité ou confidentialité nulle part. Si
vous n'êtes pas d'accord, vous voudrez peut-être aller camper et parler aux gens en face à face
comme autrefois.

-
AVIS DE CONFIDENTIALITÉ: Le contenu de ce message électronique et de tout
les pièces jointes sont destinées uniquement au (x) destinataire (s) et peuvent contenir
informations confidentielles et / ou privilégiées et peuvent être légalement protégées
de la divulgation. Il est ensuite partagé avec des entreprises technologiques, des bots, des hackers,
agences gouvernementales et commerçants. La sécurité de ce message est nulle,
et il peut être partagé sur Instagram à tout moment. Si cela vous convient,
répond s'il te plait. Il n'y a vraiment aucune sécurité ou confidentialité nulle part. Si
vous n'êtes pas d'accord, vous voudrez peut-être aller camper et parler aux gens en face à face
comme autrefois.

La fonction j'accède à mon site Web avec un navigateur. Mais cela n'a pas été déclenché après l'utilisation de l'outil Facebook pour récupérer les données de la page.

@judewang jetez un œil à https://firebase.google.com/docs/hosting/functions#when_is_cached_content_served

Pour un test rapide et sale, vous pouvez essayer d'ajouter un paramètre de requête aléatoire à l'URL testée.

La question initiale était donc de savoir comment utiliser prerender. Cette solution ne résout pas le problème d'intégration des prérendeurs, mais elle résout le graphique ouvert pour une application à une seule page.

  1. Dans mon script de construction, je copie public/index.html dans functions/hosting/index.html
  2. Dans firebase.json j'ajoute une règle de réécriture pour pointer vers une fonction cloud appelée "hôte"
"hosting": {
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "function": "host"
      }
    ]
  }
  1. Je définis une fonction cloud appelée host . Dans la plupart des cas, cela renvoie simplement le fichier index.html que j'ai copié dans functions/hosting/index.html , mais si l'agent est l'un des analyseurs de graphes ouverts connus, je renvoie les données de la base de données au format de graphe ouvert basé sur le route.
exports.host = functions.https.onRequest((req, res) => {
  var userAgent = req.headers['user-agent'];
  if (userAgent.startsWith('facebookexternalhit/1.1') ||
    userAgent === 'Facebot' ||
    userAgent.startsWith('Twitterbot')){

    //getOpenGraph() parses the path, and gets some data from the firebase database to construct open graph data.
    // eg: <meta property="og:description" content="My super cool webpage." /> <meta property="og:title"...

    res.status(200).send(getOpenGraph(req.path));
  }
  else{
    //optional - turn on caching: res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
    res.status(200).send(fs.readFileSync('./hosting/index.html').toString());
  }
});

Je pense que c'est ça. J'espère que cela aide certaines personnes!

Je dois dire que c'est décevant, les nouveaux concurrents ont ce problème, comme https://www.netlify.com/features/ , qui le rend certainement plus attrayant pour les applications Web qui ont besoin de l'intégration SEO / Social.

Firebase est en train de le tuer pour mobile / react natif, et je l'apprécie vraiment en tant que plate-forme dans son ensemble, mais c'est un très gros défaut pour les applications Web IMO.

En général, nous avons constaté que le contenu nécessitant un pré-rendu est également le contenu qui est le mieux servi par le rendu côté serveur (pour des raisons de performances et de premier chargement). Le prérendu générique n'est pas sur notre feuille de route immédiate pour cette raison.

Ceci étant dit, nous écoutons les retours sur le souhait que l'intégration des fonctions soit plus flexible pour permettre l'exécution "parfois" des fonctions. Puisque Firebase Hosting repose fortement sur la mise en cache CDN, ce type de flexibilité est difficile à réaliser techniquement pour nous. Nous continuerons à écouter les commentaires et à essayer de trouver des moyens d'améliorer la plate-forme pour votre cas d'utilisation. :sourire:

Une interface utilisateur dans Firebase pour connecter des fonctions directement à l'avant d'un domaine
name corrigera mon cas d'utilisation.

https: //us-central1-...dsaflk; sdafkljsdafkl; jsdf;
lkjsadfkljasdfkljsdaflk.cloudfunctions.net

Le ven 5 janvier 2018 à 15:33, Michael Bleigh [email protected]
a écrit:

En général, nous avons constaté que le contenu nécessitant un pré-rendu est également
contenu qui est le mieux servi par le rendu côté serveur (pour les performances et
raisons de premier chargement). Le pré-rendu générique n'est pas sur notre feuille de route immédiate
Pour cette raison.

Cela étant dit, nous écoutons les commentaires sur la volonté de
intégration des fonctions pour être plus flexible pour permettre une fonction "parfois"
exécution. Étant donné que Firebase Hosting repose fortement sur la mise en cache CDN de ce type
de flexibilité est difficile à réaliser techniquement pour nous. Nous continuerons
écouter les commentaires et essayer de trouver des moyens d'améliorer la plate-forme pour
votre cas d'utilisation. 😄

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-355683821 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AX5XbtVDQSPOIAZFyozujQQUektf2WM1ks5tHqM8gaJpZM4CtPYG
.

-
"J'ai étudié l'ingénierie"

AVIS DE CONFIDENTIALITÉ: Le contenu de ce message électronique et de tout
les pièces jointes sont destinées uniquement au (x) destinataire (s) et peuvent contenir
informations confidentielles et / ou privilégiées et peuvent être légalement protégées
de la divulgation. Il est ensuite partagé avec des entreprises technologiques, des bots, des hackers,
agences gouvernementales et commerçants. La sécurité de ce message est nulle,
et il peut être partagé sur Instagram à tout moment. Si cela vous convient,
répond s'il te plait. Il n'y a vraiment aucune sécurité ou confidentialité nulle part. Si
vous n'êtes pas d'accord, vous voudrez peut-être aller camper et parler aux gens en face à face
comme autrefois.

@mbleigh ce point de vue n'est-il pas quelque peu opposé à la philosophie du sans serveur et à l'utilisation d'un fournisseur BaaS / FaaS comme Firebase? Avec la tendance vers les SPA ces dernières années, c'est un cas d'utilisation assez courant, à tel point qu'il a été abordé par des concurrents comme netlify et roast par exemple. Bien qu'ils soient plus petits, pour l'hébergement, cela a du sens, offrant des temps de chargement plus rapides, ainsi qu'une découvrabilité et un partage critiques.

Plutôt que d'ajouter des frais généraux de développement et de maintenance supplémentaires pour les clients, un service de prérendu en option ou à tout le moins, la possibilité de s'intégrer à un service tiers tel que prerender.io serait une grande amélioration.

Firebase est vraiment une excellente plate-forme mais semble plus orientée vers le mobile, l'hébergement étant la seule partie terne pour moi.

Merci pour la réponse rapide.

@mbleigh

En général, nous avons constaté que le contenu nécessitant un pré-rendu est également le contenu qui est le mieux servi par le rendu côté serveur (pour des raisons de performances et de premier chargement).

Mis à part l' argument direct de

Les applications à page unique ou les sections d'applications doivent recourir à un certain degré de rendu côté client et, malheureusement, les robots d'exploration, y compris ceux de Google, ne sont pas encore très bons pour indexer ces pages. J'ai dû recourir à PrerenderIO après des mois de tentatives infructueuses pour laisser google indexer correctement mes sites Web, ce qui m'a obligé à conserver une approche basée sur le serveur express.js, __ juste pour le problème d'indexation__.

Pensez à un site Web qui a une page /product/**.html qui rend TOUT produit en fonction de l'URL profonde détectée côté client. La justification de cette conception est que le chargement d'une page distincte pour un produit, même en tenant compte de la mise en cache du navigateur et du cdn, n'est pas aussi fluide du point de vue UX que le chargement des données d'un autre produit et le rendu tout en changeant l'URL. Les clients passent la plupart de leur temps sur les pages de produits lorsqu'ils naviguent pour acheter sur un site Web de commerce électronique et naviguent souvent vers d'autres produits via des liens «produits connexes» ou des liens de recherche ajax sur la page.

Nous sommes coincés avec le mécanisme absurde (IMHO) _escaped_fragment_ de peur d'être pénalisé pour dissimulation ... Google a-t-il du mal à embaucher des ingénieurs avec des solutions soignées à ce problème omniprésent?

Je trouve même l'absence totale d'une section d'indexation de site Web / webapp dans la documentation __ injustifiable__.
Les applications mobiles peuvent dominer le marché grand public, mais qu'en est-il du B2B? La plupart des services de bureau fonctionnent sur des ordinateurs de bureau. L'indexation des sites Web de bureau pour atteindre les départements de R&D ou d'achat n'est pas un «bon à avoir», c'est essentiel pour les entreprises de fournisseurs B2B.

Si Firebase / Google ne sont pas intéressés par cela parce que les applications flashy fonctionnant sur des gadgets brillants génèrent plus de revenus, ce serait bien de le savoir; Quatre ans à donner des réponses évasives à des adopteurs fidèles de la technologie sont assez insultants pour l'intelligence de quiconque.

Ranty? Oui, mais je suis celui qui doit justifier des coûts d'infrastructure supplémentaires, des temps de développement supplémentaires et des comportements inattendus des robots vis-à-vis de mes clients.

quatre ans de publication de ce numéro semblent un peu ridicules. @cleverplatypus - ne pouvait pas être plus d'accord avec vos sentiments.

Ce problème dans l'ensemble n'est pas quelque chose auquel nous avons cessé de penser, mais nous n'avons toujours pas de plans immédiats pour le pré-rendu des fragments échappés.

Je reconnais qu'il y a certainement des moments où une application statique d'une seule page peut bénéficier d'un pré-rendu; cependant, je crois toujours que dans la majorité (mais pas tous) des cas de ces types de sites sont mieux encore servis par un rendu côté serveur qui peut amorcer le SPA à partir de n'importe quelle URL.

Notre objectif est de faire de Firebase Hosting une plate-forme fantastique pour offrir toutes sortes d'expériences Web. Bien que j'apprécie les commentaires francs et passionnés fournis dans ce fil de discussion, nous avons des ressources limitées et devons prioriser le travail qui, à notre avis, aura le plus grand impact sur notre clientèle dans son ensemble. Si vous voulez aider à changer d'avis sur la priorisation d'une fonctionnalité qui vous tient à cœur , le meilleur moyen est de

Je vais fermer ce fil car je ne pense pas qu'il reste vraiment de place pour la conversation, mais j'encourage tous ceux qui ne sont pas bien servis par notre intégration Cloud Functions à déposer une demande de fonctionnalité pour le pré-rendu afin que nous pouvons voir directement l'ampleur de la demande!

Merci d'utiliser Firebase Hosting, tous 😸

Cette page vous a été utile?
0 / 5 - 0 notes