Firebase-tools: prerender.ioでホスティングを使用する

作成日 2014年10月10日  ·  93コメント  ·  ソース: firebase/firebase-tools

こんにちは

prerender.ioなどのサービスと組み合わせてFirebaseホスティングを使用する方法があるかどうか疑問に思っていますか?
このようにして、SEO機能を備えたWebアプリ(つまり、angularjsアプリ)をデプロイすることが可能になります。

ありがとう

question

最も参考になるコメント

私たちが間違いなくこれをレーダーに載せているという点で、すぐにチャイムを鳴らしたかっただけです。 それは重要ですが、他にもたくさんあります(加藤が列挙したように)。 この問題に取り組むためのいくつかの素晴らしい方法についていくつかのアイデアがありますが、それらには最初に邪魔にならないようにしなければならないいくつかの依存関係があります。 辛抱強く、これが間違いなく私たちの心にあることを知ってください!

全てのコメント93件

こんにちは、

現在、Firebase Hostingの書き換え/リダイレクトルールは、事前レンダリングサービスについて十分に詳細ではありませんが、一部のお客様は、html5pushStateを使用してかなり静的なサイトのビルドプロセスに事前レンダリングステップを構築することに成功しています。 単一ページアプリに基づいてすべてのページを事前レンダリングして、正しいコンテンツがクローラーに提供されるようにします。ユーザーが別のページに移動すると、Webアプリが引き継ぎ、ページを更新せずに再レンダリングします。

これは明らかにかなり複雑で、明らかに理想的ではありませんが、私たちはこれをはるかに少ない問題点にすることに取り組んでいます

お役に立てば幸いです

クリス

たった2ヶ月だと思いますが、更新はありますか? あなたたちは今グーグルによって所有されているので、私は彼らがfirebaseでホストされているサイトが彼らの検索サービスによって索引付けされることを望んでいると思います。

現時点では、これに関する具体的な更新はありません。SEOが明らかに重要であり、FirebaseHostingを開発者に関連させ続けることだけです。 私はあなたのためにすぐに更新があることを願っています

こんにちは、みんな! このアップデートのステータスを知りたいだけですか? もうすぐ来るの? 私はFirebaseホスティングを使用していますが、懸念しているのはSEOだけです。私のサイトは、Googleのどこにも表示されません。また、Firebaseとのseo統合を検索しましたが、解決策が見つかりませんでした。 私は本当にすべてを1つの場所に保管するのが好きなので、自分のページをGoogleのクローラーエンジンに提供できる別のサービスに変更するのは残念です。 Firebaseは現在Googleが所有していることを知っているので、これは大きな改善になるでしょう。 ありがとうございました!

このサービスにもまだ興味があります。 ありがとう!

スレッドに私の声を追加する-この機能があれば素晴らしいです!

+1

私もこれを待っています。

別の方法として、 https: //divshot.com + firebaseの使用を検討してい

+1

DIvshotとFirebaseのマージが最近発表されたため、この問題が再び発生します。 私は実際にDivshotに移動して、無料のカスタムドメインとprerender.io機能の両方を利用しています。 fireabseはこれらの問題にどのように対処しますか? 無料利用枠にカスタムドメインを追加しますか? prerender.ioはどうですか?

JSプリレンダリングをFirebaseHostingに導入する方法を調査していますが、現時点で共有する確固たる計画はありません。 (個人的なメモ:私は本当にそれが起こるのを見たいです)。

Firebaseは、すべてのサイトをHTTPSのみにする必要があると考えているため、ユーザーに代わってSSL証明書のプロビジョニングを管理します。 そうすることに伴うコストは、私たちが無料のカスタムドメインホスティングを提供することができないようにします。

非常に速い(しゃれを意図した)答えをありがとう。

静的なウェブアプリホスティングプラットフォームには、ある種のSEO機能が必要以上に必要なので、12月中旬までそれを機能させることができれば幸いです。そうしないと、多くの開発者が古い学校のホスティングプロバイダーに切り替える必要があります(残念ながら私も含まれます)。 )。

2番目の答えは完全に理にかなっており、有料の階層にジャンプすることを検討しています。これは、同じ追加のスケーリングを提供していないのは残念です。

Firebase Hostingサイトの100%は、Fastlyの非常に高速な(しゃれが逆流した)CDN上にあります。 無料プランでも(カスタムドメインではなく)、Divshotの高性能プランのすべての特典を利用できます。 帯域幅に関しては、10GBは静的なWebサイトの「たくさんの」帯域になります。

私はDivshotの高性能特典についてはまだ知らないことを認める必要があります。 とにかく、アプリを移行してバックエンドを準備する(そして新機能を遅らせる)必要があるのは残念ですが、CSの学位はほとんどすべての時間を費やしています。 私のプロジェクトはそれほど進んでいませんが、他の人が大幅に遅れる可能性があるので、FirebaseがSEOに対応するのに役立つか、Divshotがその終了を遅らせることを心から願っています。 これはおそらく選択肢ではないことを理解していますが、私たちの一部が移行する場合、彼らは二度と戻ってこないかもしれません。

買収おめでとうございます@mbleigh

@DamodarSojka 、私はあなたに完全に同意します。 私は既存のDivshot有料ユーザーです。 事前レンダリングは、Facebookでの私のWebサイトのマーケティング/共有に必須です。 Firebaseがこの機能をすぐに提供しない場合は、他のウェブホスティングサービスに移行する必要があります。

SEO機能の+1

また、Divshotのお客様にも支払いを行っており、Prerenderのサポートが必要です。 Divshotでの事前レンダリングのサポートは理想的ではありませんが(共有後のproduction.blabla.divshot.io URLのため)、Firebaseでの事前レンダリングのサポートがまったくない場合は使用できません。 ありがとう。

同様に、prerender.ioを使用している場合でも、他の同等のソリューションを使用している場合でも、SEOは最も重要です。 これは、divshotがシャットダウンする前にFirebaseで対処する必要があります。

うん、まだソに問題がある

+ 1-有料のDivshotのお客様は、Firebaseに移行するためにPrerenderのサポートが必要になります。

Completleyは同意します。 Firebaseは、事前レンダリング機能がない場合、Divshotの代替品ではありません。 私はDivshotの有料ユーザーです。 Divshotのシャットダウンの2か月前の通知。 別のサービスへの移行に取り組む必要がありますか? サーバーの構成に時間を費やす必要がありますか? それとも私がやっていたことに集中し続けますか? これはサービスのアイデアではありませんか? サーバーの問題に対処する必要はありませんか? Firebaseが12月14日のオプションになるのか、それともサーバーの構成に時間をかける必要があるのか​​を説明してください。

Gents、Mikeは、この機能の全体像をすでに述べています。JSの事前レンダリングをFirebase Hostingに導入できる可能性がある方法を調査していますが、現時点で共有する確固たる計画はありません。 (個人的なメモ:私は本当にそれが起こるのを見たいです)。

タイムラインはありません。 私たちはあなたがするのと同じくらいそれを望んでいます。

あなたはあなたが何をすべきかをあなた自身で決める必要があるでしょう。 公道地図はありません。 リクエストやクエリの数に関係なく、タイムラインで保証することはできません。 申し訳ありませんが、ふわふわの答えは幸せではありませんが、現実的な答えが計画に役立つことを願っています。

☼、加藤

あなたが本当にそれを気にかけているのを見てうれしいです:)みんなありがとう!

@mbleigh / @katowulf JSプリレンダリングをFirebaseに導入する計画に関する1つの質問:JSプリレンダリングがFirebaseが提供している現在のSEOサポートをどのように改善するか。

このSOの回答に基づいて、Firebaseはng-conf2015以降すでにSEOをすぐに提供しています。

そのため、FirebaseでPrerender.ioを使用しようとすることの長所はわかりません。

@douglascorrea for Google SEOの改善はわずかですが、(

これによる最大のメリットは、Facebook OpenGraphタグ、Twitterカード、およびGoogle以外の検索エンジンのサポートを強化したいサイトです。

@mbleighに感謝します、それは物事を明確にし、私たちが本当にそのサポートを望んでいる、または@drtriumphのようなある種の代替案が彼のコメントで言ったと私に思わせます。

私は解決策を探していましたが、他の読者に役立つ可能性のある次の詳細を見つけました。

  • 2015年10月、Googleは_escaped_fragment_とハッシュバン(!#)の使用の推奨を非推奨にしました。 したがって、Googleの場合、すべてのSPAはhtml5 pushstate(angularjsではhtml5mode)を使用する必要があります。 ただし、しばらくの間、ハッシュバン(!#)をサポートし、エスケープされたフラグメントに変換し続けます。
  • Facebookやおそらく他のクローラーはまだescaped_fragmentを必要としています。Facebookはハッシュバンを_escaped_fragment表記に自動変換します。 そして、おそらく他のクローラーはグーグルからの以前の推薦だったので同じことをします。
  • FirebaseはまだUser-Agentに基づくリダイレ​​クトをサポートしていないため、hasbangs(!#)を次のようにescape_fragamentに変換するクローラーに期待が残ります。
    URLが次のようになっている場合:
    http://www.example.com/#!/user/1
    次に、次のようにURLにアクセスします。
    http://www.example.com/?_escaped_fragment_=/user/1

したがって、しばらくの間、これを理解するための1つのアイデアは次のようになります。

  • html5 pushstate(Angularではhtml5モード)を使用せず、代わりにhashbangを使用してください(!#)
  • prerender.ioを使用して、アプリケーションに必要なすべてのページの静的/キャッシュバージョンを作成します(通常の事前レンダリングプロセスのように)。
  • キャッシュされたバージョンを?_escaped_fragment_=フォルダーで始まるフォルダー構造に格納するプラグインを開発し、次のようなフォルダーを作成します。
    URLが次のようになっている場合:
    http://www.example.com/#!/user/1
    生成されるフォルダは
    ?_escaped_fragment_= +- /user +- /1

1つのファイルが実際のhtmlファイルになります。

  • firebase-toolsを使用して、ルートのfirebaseフォルダーにそのフォルダーをデプロイします(このプロセスは、cronジョブなどで自動化できます)。

私はそれがどのように機能すると思いますか:

  • クローラーがハッシュバンのURLを見ると、 ?_escaped_fragment_= URLに到達しようとします。 これらのフォルダに実際のHTMLファイルがあるため、Firebaseはその時点でサービスを提供し、index.htmlにリダイレクトしません。したがって、クローラーによって読み取られるHTMLは、AngularJSではなくキャッシュバージョンになります。

これを実現するには、すべてのページに対してプリレンダーを実行し、そのフォルダーを保存して、Firebaseデプロイを実行するスケジュール済みジョブを作成する必要があります。

Firebaseデプロイは部分的なデプロイ(同期またはインクリメンタルデプロイ)をサポートしていないため、このプロセスを担当するサーバー上にデプロイの更新されたコピーを維持する必要があります。

私はそれをセットアップしてみます、そしてそれがうまくいくかどうかあなたに知らせます。

他のヘッダーキーと同じように「X-Prerender-Token」を設定させていただけますか?
https://www.firebase.com/docs/hosting/guide/full-config.html
https://prerender.io/install-token

+1

@ srk9は、このスレッドを転用するのではなく、別の問題を送信してください。

この問題が解決されたのはなぜですか? 解決策が投稿されていません。

@douglascorrea 、あなたのアイデアはどうなりましたか?

ありがとう、
--D

こんにちは@bethuneco 、ここに結果を投稿しないことについて申し訳ありません。

実は記事を書こうと思っていたのですが、このソリューションは本番環境で動作させるための「機械」がたくさんあることに気づき、方法がわからないので「お勧め」するのが苦手でした。大規模に動作します。

ただし、基本的には、前に説明したように、デプロイごとにすべてのページを事前レンダリング/スクラップし、結果のHTMLを上記のフォルダー(/?_ escaped_framgment_ / xxxx)に保存する「デプロイメント/レンダリング」サーバーが必要です。 これらの「実際の/物理的な」htmlは、「レンダリングされた」ページになります。

したがって、google / facebook / twitterクローラーがページにアクセスし、「?_ escaped_fragment」プレフィックスを介して「エスケープされたフラグメント」を要求するたびに、実際には実際のHTMLを含む実際のフォルダーを指し、それらのHTMLにインデックスが付けられます。
実際のユーザーがアプリケーションにアクセスするとき、ユーザーは?_escaped_fragmentを使用しないため、動的ページを受け取ります。

問題は、この「解決策」は、各ページまたは追加のページに対してHTMLを生成し続ける必要があることです。 たとえば、アプリケーションが単純なCMSの場合、新しい投稿/記事/ページごとに、プロセスを実行して新しいHTMLページを生成する必要があります。 ただし、動的なソーシャルネットワークについて話している場合、問題はさらに大きくなります。たとえば、各ユーザーが数百の「レンダリング可能な」ページを生成できる場合、プリレンダー/内部クローラーは常に実行されている必要があります。 そして、それは、現実の世界ではストッパーになる可能性があります。

これは非常に「トリック」なソリューションであり、小さなアプリでは機能しますが、実際の大きなアプリでは機能しません。クローラーが移動したときに実際にHTMLを生成し、クローラーをオンラインで事前レンダリングする事前レンダリングサービスに自動的にリダイレクトしないためです(通常の事前レンダリングプロセスは)です。

したがって、今では、Nginxサーバーを静的サーバーとして使用して事前レンダリングできるようにするか、 https: //www.netlify.com/のようなシングルページアプリケーションにすぐに使用できるPrerenderを提供するDivshot競合他社を使用する必要があります。 。

@douglascorrea

その拡張された説明をありがとう。 あなたはNetlifyについて最初に言及した人なので、それについて調べます。

すべてを事前レンダリングすることは、小さなサイトにのみ適しているというのは正しいことです。 幸い、私のアプリはかなり小さいので(最大で約1,200ページ)、うまくいく可能性があります。

最も単純な解決策(およびGoogleが回避している解決策)は、Javascriptを事前レンダリングし、ロボットユーザーエージェントが検出されたときにHTMLを提供することです。 Googleはすでにブラウザの外部でのレンダリングを実証しているので、これは技術的に難しいことではありません。 それは広告ビジネスの競争相手を助けるように見えるので、彼らにとって戦略的に挑戦的です。

何かがうまくいったら、ここに更新を投稿します。

混乱するかもしれない人のために、ここでいくつかの明確さを提供させてください:

Firebase HostingはサーバーでのJSプリレンダリングをサポートしていますか? いいえ、そうではありません。 サーバー側の事前レンダリングはサポートしたいものであり、長期的なロードマップに含まれていますが、現時点で発表する具体的な日付やタイムラインはありません。 これは、特にFacebook共有やTwitterカードを使用している人にとっては問題点であることを私たちは知っており、将来的にはこれについてもっと共有できるようになることを望んでいます。

X-Prerender-Tokenサポートすることはできませんか? いいえ、それは機能しません。 事前レンダリングは、 ?_escaped_fragment_= URLで_実際の事前レンダリングされたコンテンツ_を提供する必要があります。つまり、ヘッダーだけでなく、サーバーが認識して適切に処理する必要があるコンテンツです。 私たちが望んでいたほどの半分の解決策はありません。

どのような事前レンダリングが可能ですか? 現時点で実行できる実際の「レンダリング」の種類は、静的サイトのコンパイルのみです。 通常、これはJekyllのようなもので行われますが、ヘッドレスブラウザをローカルで使用して、より動的なサイトを「レンダリング」することは確かに可能です。 各URLを徹底的にレンダリングしてからデプロイする必要があるため、現時点ではこれは素晴らしいユースケースではありません。 CDNがクエリパラメータを削除し、これは一般的にサポートされているユースケースではないため、 ?_escaped_fragment_を含むファイル名を作成することは_不可能_であることに注意してください。

これは、他のクローラーを抑えるためのGoogleの戦略的なものですか? いいえ、絶対にありません。 FirebaseHostingへの事前レンダリングによってもたらされる利点を強くサポートしたいと考えています。 それはすべて時間とリソースの問題です。

ソーシャルメディアタグ/代替SEOの問題のため、Firebaseホスティングから切り替える必要がありました。 技術者以外の人が、インターネット上の他の人のようにリンクに素敵な写真がないことに気付いたとき、それは大きな問題です。

phantomjsとプリレンダリングミドルウェアを使用してプリレンダリングできます。 これはオープンソースで問題なく動作しますが、opsが機能しないようにprerender.ioを使用しました。 最初のリクエストでは少し時間がかかりますが、すべてのページをプリエンプティブにリクエストすることでページをキャッシュできます。

すべてのページをリクエストするのもいいでしょう。それなら、いくつかのテストを実行し、htmlを解析して、タグとコンテンツが正しくレンダリングされていることを確認できます。

大きな注意点があります。 Prerenderは、Firebaseのライブデータでは機能しません。 どうしてそれができますか? Firebaseデータはリアルタイムであり、接続は永続的です。 事前レンダリングは1回限りで、接続は閉じられます。 リクエストをカウントできないため、ページのレンダリングがいつ完了したかを知る方法はありません。

これを修正するためのアイデアがいくつかありました。

  1. .on("value") FirebaseサブスクリプションごとにGETリクエストを作成します。 事前レンダリングリクエストの場合は、サブスクリプションをスキップしてください。 通常のユーザーの場合は、GETリクエストをスキップします。 これは.on("child_*")イベントでは機能しません。
  2. メインエントリファイルの上部でグローバル事前レンダリングフラグをfalseに設定し、データが読み込まれたら、ページコンポーネントごとにフラグをtrueに設定します。 適切な設計では、通常、_loading状態_と_error状態_と_success状態_があるため、エラー/成功状態ヘルパーメソッドでフラグをtrueます。

面倒ですが、正しくレンダリングされず、特別な処理が必要な動的ページはごくわずかです。 私はまだ静的な利益がコストを上回っていると思います。

@mbleighはあなたたちが将来思いつくものを楽しみにしています。 グーグルに参加することは、一歩後退し、2歩前進すると確信しています。

いくつかの回避策を本当に望んでいます。 バックエンドが必要な唯一の理由は、Twitterカードとopengraphsです。 確かに、バックエンドは、同形レンダリングなど、シングルページアプリに他のいくつかの利点をもたらしますが、それは素晴らしいことです。 TwitterとOGタグは、共有が必要なアプリにとって重要です。

これまたはデータベースからそのオブジェクト/ htmlを提供するようにfirebaseバックエンドに命令する、ある種の書き換えのようなルールがある可能性がありますか?

このようなオブジェクトは、すべての共有がURLにアクセスするか、最初に[共有]ボタンを渡すことから始まるため、事前に準備することができます。

バンプ..Firebaseに驚いたばかりで、これらのコメントを読んで、Firebaseを使用できないことに気づきました。
Prerenderと同様のサービスも必要なので。 では、これに関する開発はどうなっているのでしょうか。

一緒にグーグル! あなたはフリージンの検索エンジンです! :笑い:

でも真剣に。 これはとても重要です。 これは、これまでで最もひどい最も重要なことかもしれません。

私はそれが冗談であったことを知っています、しかし、要点を言うと、その発言はグーグル検索またはグーグルファイアベースに向けられましたか? それらのうちの1つだけが検索エンジンであり、そのうちの1つだけがFirebase Hostingを提供します(そして、Webページの事前コンパイルはどちらの範囲でもありませんが、これを提供するツールでHostingがより適切に機能するための明確な付加価値があります)。

関連するハウスキーピングノートでは、firebase-tools(つまり、このOSS課題追跡システム)とも関連していません。 あなたの投票が優先順位の議論に追加されるように私は世話をします。 メーリングリストは、おそらく将来のコア機能のリクエストに連絡するのに最適な場所です。

最も重要なことは、これを忘れていないことです。 それは私たちにとってまだ非常に重要です。 Google Cloud Functionsと統合し、アナリティクス、クラッシュレポート、テストラボを介して確固たる洞察を提供するよりも少し重要ではありませんが、それでも重要です。

次に優先順位について話し合うときに、これをもう一度取り上げます。 フィードバックにご意見をお寄せいただき、誠にありがとうございます。 ☼☼☼

Firebase @ katowulfへの取り組みに
これが、ng1アプリケーションの「ホスト」としてfirebaseを使用できないようにする唯一の理由です。

ここにいるのはあなただけではありません。 他の人も同じ制限に遭遇しました。 GoogleはJavaScriptで生成されたコンテンツのインデックスを作成できるようになり、Firebaseコンテンツのインデックスを作成するための特別な規定があるため、ページに読み込まれた認証されていないFirebaseデータはすでにインデックスに登録されているはずです。 しかし、完全なプリコンパイラのサポートが注目されています。

@katowulfはheadsupと同じです(まだ知らないか見たことがない場合)が、主な問題はグーグルクローラーではありません。 Prerenderのようなものを使用すれば、人々はすでに知っていると思います。 満足していないのは、LinkedIn、Facebook、Twitterなどの他のクローラーです。 彼らは静的なコンテンツを望んでいます

@samvloeberghsただし、Googleがこのサポートを提供することの意味は、他の人がそれに続く可能性が高いということだと思います。 それで、私はそれがこれを広めるための正しい方向への一歩であることを暗示することを意図しました(そしてそれは少なくとも今日のグーグルで機能します)。

FB / LinkedIn / Twitterが、Googleの能力に従って、私たちが望むように迅速に前進することはありそうにありません。 背後には常に主要なプレーヤーがいて、それを無視することはできません。 一方、Googleは、AngularUniversalを使用したサーバー側のコンパイルを特徴とするNG2に取り組んで問題を解決しています:)👍

救助に角度があります! ちょっと待ってください、機械学習ではこれらすべてを解決できないと言っていますか?

私の2セントを提供するために、クライアントは少なくともSEOと同じくらいソーシャルメディアカードを評価しているように見えることがわかりました。 最近のプロジェクトから言えば、Twitter / Facebookは、ブランドがWebサイトへのリンクを共有することで宣伝する主な方法です。

明らかにSEOは依然として重要ですが、ソーシャルメディアカードを攻撃することはより簡単で短期的な解決策でしょうか? Webカードは単なるメタタグなので、firebase.jsonで構造を定義できますか(セキュリティルールと同様)? Firebaseは、Twitter / Facebookクローラーに適切なメタタグを挿入できますが、それほど単純ではないと確信しています😄。

とにかく、素晴らしい仕事とコミュニティのサポートに感謝します。 よりエキサイティングなFirebase機能(クラウド機能👍!)のいくつかを楽しみにしています。

@katowulf 、私のコメントは何よりも強い「バンプ」でした...皆さんは素晴らしい仕事をしています! 私は全体として私の冗談をもっとグーグルに向けている。 ただし、Firebaseは、この「SPA / PWA-SEOページレンダリング」の問題全体を所有する必要がある新しい* Google部門であると私は信じています。

これについての私の考えは...

グーグルが世界に出すどんな製品も、私たちが今日使用しているすべてのプラットフォームで完璧に機能し、その元の製品であるグーグル検索を反映して機能する輝かしい例であるべきです。

SPAはもう少し前から出回っています。Googleには[Angular]と[Polymer]の2つがあります。 それらにSEOを実装すること(メタタグ/ OpenGraph /スキーマ)は主要なブラックボックスです(あなたがバックエンドの忍者でない限り)。 Google検索がJSの処理を開始したことは素晴らしいニュースでしたが、これは間違いなく戦いの半分にすぎません(おそらくそれ以下です)。

サービスとしてのバックエンド(BaaS)であるFirebaseは、このSPAページ全体のレンダリングを本当にスムーズにする完璧な新しい* Googleグループのようです。 皆さんがそれを回避することは知っていますが、これは重要な/最優先の機能として属するべきだと強く感じています。

この見出しを読んで想像してみてください...

FIREBASE PRESENTS .. ..
すべてのシングルページアプリケーション(SPA)およびプログレッシブWebアプリ(PWA)用の新しく改善されたSEOをすぐに使用できます。

開発者は群がるでしょう:+1:

私たちが間違いなくこれをレーダーに載せているという点で、すぐにチャイムを鳴らしたかっただけです。 それは重要ですが、他にもたくさんあります(加藤が列挙したように)。 この問題に取り組むためのいくつかの素晴らしい方法についていくつかのアイデアがありますが、それらには最初に邪魔にならないようにしなければならないいくつかの依存関係があります。 辛抱強く、これが間違いなく私たちの心にあることを知ってください!

まあ、これは残念です。 私は今、firebaseの代替案を探しています...

ほぼ3年になります...

これに関する更新..?

Firebaseがdivshotを所有しているので、これは機能しないでしょうか? PLZを更新してください!

私たちはこの種の機能に対する要望を十分に認識しており、ここでいくつかのより良いソリューションを提供することが優先事項です。 発表するタイムラインはまだありませんが、皆さんのことを忘れていません。

+1

:( :( :(

同様の結論に達しました。 他に何を見たことがありますか? ;)

共有リンクエンドポイントとしてFirebaseFunctionsを使用し、JavaScriptでリンクをリダイレクトします。

ご覧になったことがあるかもしれませんが、CloudFunctionsはFirebaseHostingと統合されています!!!

これは、FirebaseHostingを使用したサーバー側レンダリングの標準的なソリューションと見なすことができます。 楽しい!

@mbleigh OKなので、以下のようなメタデータを含むグローバルヘッダーファイルがある場合、現時点ではこれはフロントエンドに複製されません。 クラウド機能をインストールする場合、この機能をオンにする必要があるのはそれだけです。

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

素晴らしい、アップデートしてくれてありがとう。

2017年5月17日17:39、「MichaelBleigh」 [email protected]は次のように書いています。

ご覧になったことがあるかもしれませんが、CloudFunctionsが統合されました
FirebaseHostingを使用https://firebase.google.com/docs/hosting/functions
!!!

これは、サーバー側のレンダリングに対する標準的なソリューションと見なすことができます
FirebaseHostingを使用します。 楽しい!


あなたがコメントしたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-302268864
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AX5XbtWCdygdw4ozixK5_XcL2Dlznp4Jks5r65M-gaJpZM4CtPYG

私はこれがこれらのコメントにとって最良の問題ではないかもしれないことを理解していますが、私の問題をグーグル検索することは私をそれに導きました、そしていくつかの活発な議論があるようですので私を許してください!

FirebaseでホストされているSPAでソーシャルサイトのオープングラフテンプレートをレンダリングする問題を解決するために私が見たいのは、ユーザーエージェントを介して負荷分散する機能です。

クラウド関数を使用してmemcache / cloudsqlからいくつかのテンプレートデータを取得し、テンプレートタグを要求元のソーシャルプラットフォームにレンダリングできるようにしたいのですが、他のすべてのクライアントの静的ホスティングにフォールバックします。 そうすれば、すべてのリクエストに対して完全なサーバー側のレンダリングは必要ありません。

@cdharris完全に、ATM、window.locationを使用して静的ホスティングへの追加のリダイレクト(クライアント/訪問者用)を作成しようとした関数へのすべての要求を書き換えます。私のSEOの目的では、おそらく機能しませんでした。社会的な目的のためにそれはそうするでしょう。

@mbleighは、クローラー/ソーシャルからのリクエストをクライアント/訪問者と区別するように書き換えるオプションはありますか? 私は他のグロブ式の中で_escaped_fragment_でテストしました...何も= /事前に感謝します

Firebase関数で何を返すかを決定することは機能します。 私たちは言うことができます:要求はFacebotから来ていますか? 次に、これらの開いているグラフタグを返します。 そうでない場合は、index.htmlを返します。 しかし、firebase関数からdarn index.htmlを返すにはどうすればよいですか?

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

2017年9月13日4:34 AM、「Birowsky」 [email protected]は次のように書いています。

Firebase関数でコンテンツを決定することは機能します。 と言えます:
リクエストはFacebotから来ていますか? 次に、これらの開いているグラフタグを返します。 そうでない場合は、
index.htmlを返します。 しかし、どうすればdarnindex.htmlを
Firebase機能?


あなたがコメントしたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329140134
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AX5XbrXQNbVMhRmeZQTbx3Z3vi0c1HXTks5sh728gaJpZM4CtPYG

@megamindbrianは、関数がホストされているファイルにアクセスできることを意味しますか? それはどこかに文書化されていますか? とにかくありがとう!

はい。 それは私がそれを使用したことを覚えている方法です、私がドキュメントを見つけようとする良い質問です。

2017年9月13日午前7:09、「Birowsky」 [email protected]は次のように書いています。

@megamindbrian https://github.com/megamindbrianは、
関数はホストされているファイルにアクセスできますか? それはどこかに文書化されていますか?
とにかくありがとう!


あなたが言及されたのであなたはこれを受け取っています。

このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG

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

2017年9月13日午前7:09、「Birowsky」 [email protected]は次のように書いています。

@megamindbrian https://github.com/megamindbrianは、
関数はホストされているファイルにアクセスできますか? それはどこかに文書化されていますか?
とにかくありがとう!


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG

これは一時ディレクトリを使用しますが、ファイルでも機能すると思います
プロジェクトと一緒にアップロードしました。 それは不変かもしれませんそれが理由です
例は、ファイルをオフロードして別の場所に保存することです。
https://firebase.google.com/docs/storage/extend-with-functions

2017年9月13日午前7時12分、「 BrianCullinan

ここに1つのhttps://stackoverflow.com/questions/42960506/how-can-i-
read-and-write-to-firebase-storage-from-within-cloud-functions-for-fir

2017年9月13日午前7:09、「Birowsky」 [email protected]は次のように書いています。

@megamindbrian https://github.com/megamindbrianは、
関数はホストされているファイルにアクセスできますか? それはどこかに文書化されていますか?
とにかくありがとう!


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG

申し訳ありませんが、関数がホストされているファイルに概念的に接続されている方法の適切な紹介がまだ表示されていません。 あなたが説明したいのであれば、私はあなたのためにいくつかのポイントを得ました: https

コード例で答えているのを見ることができましたが、はっきりしていませんでした
関数内から、次のファイルのコンテンツで応答できます。
あなたのプロジェクト? リダイレクトではありません。
もう少しコードを掘り下げます。

2017年9月13日午前7時18分、「Birowsky」 [email protected]は次のように書いています。

申し訳ありませんが、機能の適切な紹介がまだ表示されていません
概念的にホストされたファイルに接続されています。 あなたが説明したいなら、私は得ました
あなたのためのいくつかのポイント: https


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329182385
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AX5XbnCSoaKUuVKUnfha5A-4K-p76kZ3ks5sh-QygaJpZM4CtPYG

@megamindbrian fs.readFileSync('./index.html')試しましたが、残念ながらファイルがありません。 また、暗黙的に生成されたストレージバケットでホストされているファイルを見つけることも望んでいましたが、運が悪かったのです。 どのように進めますか?

ホスティングpublicディレクトリをfunctionsディレクトリ内にネストすると、そこで利用できるようになります。

@Birowskyうん、これが私がクラウド関数からファイルを読み取る方法です、例えばindex.js:

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

ただし、プロジェクトのレイアウトが次の場合:

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

関連するファイルを/ distから/ functionsにコピーする必要があります

この問題は(これまでのところ)アルモスが3年ありますが、現時点ではまだ運がありませんか????

おそらく、Googleがすべてをサポートする途中でFirebaseを放棄することを意味します
私たちのアプリ。

このクラスの問題に対する私たちの公式の解決策は、CloudFunctionsを使用することです
静的に表示する必要があるコンテンツのサーバー側レンダリングを実行する
クローラー:

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

これは、あらゆる種類のソリューションを可能にする、より堅牢で一般化されたソリューションです。
かっこいい!

まだ足りないものがあると強く感じたら、教えてください
それに取り組む方法を考えることができるように、詳細なユースケース! :)

木、2017年9月14日には、午前3時57分PMブライアン・カリナン[email protected]
書きました:

おそらく、すべてをサポートしている最中にFirebaseを放棄したGoogleを意味します
私たちのアプリ。

15:52の木、2017年9月14日には、tofanelli [email protected]
書きました:

この問題は(これまでのところ)アルモスが3年ありますが、現時点ではまだ運がありませんか????


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
<
https://github.com/firebase/firebase-tools/issues/33#issuecomment -329630338

またはスレッドをミュートします
<
https://github.com/notifications/unsubscribe-auth/AX5XbhBSDSl6TStSv7M02Dx0brb9MOPbks5sia44gaJpZM4CtPYG


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329631266
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AAAD_iI6L-yu3RTECI88a2y_ZOzIxdDQks5sia9rgaJpZM4CtPYG

@mbleigh Firebaseドメインのルートでクラウド関数を使用できますか?

はい、私があなたを正しく理解していれば。 以前に問題が発生したことがありますか?

木、2017年9月14日には、18:38ブライアン・カリナン[email protected]
書きました:

@mbleigh https://github.com/mbleighでクラウド機能を使用できますか?
Firebaseルートディレクトリはまだですか?


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329653711
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AAAD_g7BV3TMM_5nVX92_-3ai_mZHfHBks5sidUvgaJpZM4CtPYG

@mbleigh

これは、あらゆる種類のクールなことを可能にする、より堅牢で一般化されたソリューションです!

SSRは私たちのシステムをより複雑にします😢
事前レンダリングは常にクールであるとは限りませんが、頻繁に行われると思います💡
例:Facebook OGP、Twitterカード、Google以外のSEO

@ mbleigh @ megamindbrianメッセージありがとうございます。 私は私が私の関数にすべての要求を向けホスティングおよび応答作ったindex.htmlでホストされているfunctions/build/index.htmlクライアントに。 しかし、FaceBotからのリクエストであることを確認する方法がわかりませんか? Facebookのデバッグツールを使用して自分のWebサイトのURLにアクセスしようとしましたが、クラウド機能がトリガーされると思いましたが、そうではありませんでした。 私はバックエンド開発に精通していませんが、ヒントを教えてください。 ありがとう。

Facebookツールを使用するときは、必ず何かを読むボタンを使用してください
プレビューの近くにある「新しいコピーを取得する」のように。

2017年10月17日火曜日午前8時29分、ジュード[email protected]は次のように書いています。

@mbleigh https://github.com/mbleigh @megamindbrian
https://github.com/megamindbrianメッセージありがとうございます。 私は持っています
私のホスティングを私の機能と応答にすべての要求を向けさせました
クライアントに対してfunctions / build /index.htmlでホストされているindex.html。 だが
FaceBotからのリクエストであることを確認する方法がわかりませんか? 私が試してみました
Facebookのデバッグツールを使用して自分のWebサイトのURLにアクセスすると、
クラウド機能がトリガーされますが、トリガーされませんでした。 私はよく知らない
バックエンド開発、ヒントを教えてください。 ありがとう。


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-337266581
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AX5XbrCQ3mowcUnJjWYWsaiScoN1y4l0ks5stMfcgaJpZM4CtPYG

-
守秘義務の通知:この電子メールメッセージの内容と
添付ファイルは、宛先のみを対象としており、次のものが含まれる場合があります。
機密情報および/または特権情報であり、法的に保護されている場合があります
開示から。 その後、テクノロジー企業、ボット、ハッカー、
政府機関、およびマーケター。 このメッセージのセキュリティはありません、
そしてそれはいつでもInstagramで共有されるかもしれません。 これでよければ、
答えてください。 どこにもセキュリティやプライバシーは実際にはありません。 場合
あなたはキャンプに行き、人々と顔を合わせて話したいと思うかもしれないことに同意しません
昔のように。

Firebaseログに「関数の実行が開始されました」などの何かがありますか?

2017年10月17日火曜日午前8時37分、Brian Cullinan
書きました:

Facebookツールを使用するときは、必ず次のようなボタンを使用してください。
プレビューの近くにある「新しいコピーを取得する」のようなもの。

2017年10月17日火曜日午前8時29分、ジュード[email protected]は次のように書いています。

@mbleigh https://github.com/mbleigh @megamindbrian
https://github.com/megamindbrianメッセージありがとうございます。 私は持っています
私のホスティングを私の機能と応答にすべての要求を向けさせました
クライアントに対してfunctions / build /index.htmlでホストされているindex.html。 だが
FaceBotからのリクエストであることを確認する方法がわかりませんか? 私が試してみました
Facebookのデバッグツールを使用して自分のWebサイトのURLにアクセスすると、
クラウド機能がトリガーされますが、トリガーされませんでした。 私はよく知らない
バックエンド開発、ヒントを教えてください。 ありがとう。


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-337266581
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AX5XbrCQ3mowcUnJjWYWsaiScoN1y4l0ks5stMfcgaJpZM4CtPYG

-
守秘義務の通知:この電子メールメッセージの内容と
添付ファイルは、宛先のみを対象としており、次のものが含まれる場合があります。
機密情報および/または特権情報であり、法的に保護されている場合があります
開示から。 その後、テクノロジー企業、ボット、ハッカー、
政府機関、およびマーケター。 このメッセージのセキュリティはありません、
そしてそれはいつでもInstagramで共有されるかもしれません。 これでよければ、
答えてください。 どこにもセキュリティやプライバシーは実際にはありません。 場合
あなたはキャンプに行き、人々と顔を合わせて話したいと思うかもしれないことに同意しません
昔のように。

-
守秘義務の通知:この電子メールメッセージの内容と
添付ファイルは、宛先のみを対象としており、次のものが含まれる場合があります。
機密情報および/または特権情報であり、法的に保護されている場合があります
開示から。 その後、テクノロジー企業、ボット、ハッカー、
政府機関、およびマーケター。 このメッセージのセキュリティはありません、
そしてそれはいつでもInstagramで共有されるかもしれません。 これでよければ、
答えてください。 どこにもセキュリティやプライバシーは実際にはありません。 場合
あなたはキャンプに行き、人々と顔を合わせて話したいと思うかもしれないことに同意しません
昔のように。

@megamindbrian関数は、ブラウザで自分のWebサイトにアクセスするとトリガーされました。 しかし、Facebookツールを使用してページのデータを取得した後はトリガーされませんでした。

@judewanghttps://firebase.google.com/docs/hosting/functions#when_is_cached_content_servedをご覧ください

迅速で汚いテストの場合、テストされたURLにランダムなクエリパラメータを追加してみてください。

したがって、最初の質問は、プリレンダーの使用方法でした。 このソリューションは、事前レンダリング統合の問題を解決しませんが、シングルページアプリのオープングラフを解決します。

  1. ビルドスクリプトで、 public/index.htmlfunctions/hosting/index.htmlにコピーします
  2. firebase.jsonに、「ホスト」と呼ばれるクラウド関数を指すように書き換えルールを追加します
"hosting": {
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "function": "host"
      }
    ]
  }
  1. hostというクラウド関数を定義します。 ほとんどの場合、これはfunctions/hosting/index.htmlにコピーしたindex.htmlファイルを返すだけですが、エージェントが既知のオープングラフパーサーの1つである場合は、データベースデータをオープングラフ形式で返します。ルート。
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());
  }
});

それだけだと思います。 これが何人かの人々に役立つことを願っています!

これは残念なことです。https://www.netlify.com/features/などの新しい競合他社はこれを下げており、SEOとソーシャルの統合を必要とするWebアプリにとって間違いなく魅力的です。

Firebaseはモバイル/ React Nativeでそれを殺しており、プラットフォーム全体としては本当に楽しんでいますが、これはWebアプリIMOにとってかなり大きな欠陥です。

一般に、事前レンダリングが必要なコンテンツは、サーバー側のレンダリングによって最適に提供されるコンテンツでもあることがわかりました(パフォーマンスと初回ロードの理由から)。 このため、一般的な事前レンダリングは当面のロードマップには含まれていません。

そうは言っても、「時々」関数を実行できるように、関数の統合をより柔軟にしたいとのフィードバックを聞いています。 Firebase HostingはCDNキャッシュに大きく依存しているため、この種の柔軟性を技術的に実現することは困難です。 今後もフィードバックに耳を傾け、ユースケースに合わせてプラットフォームを改善する方法を模索していきます。 :スマイル:

関数をドメインの前面に直接接続するためのFirebaseのUI
名前は私のユースケースを修正します。

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

金には、2018年1月5日15:33で、マイケル・Bleigh [email protected]
書きました:

一般に、事前レンダリングが必要なコンテンツも
サーバー側のレンダリングによって最適に提供されるコンテンツ(パフォーマンスと
初回ロードの理由)。 一般的な事前レンダリングは、当面のロードマップには含まれていません
このために。

そうは言っても、私たちは欲しいというフィードバックを聞いています
「時々」機能を可能にするために、より柔軟な機能統合
実行。 Firebase Hostingは、この種のCDNキャッシングに大きく依存しているため
柔軟性を技術的に実現することは困難です。 私たちは続けます
フィードバックに耳を傾け、プラットフォームをより良くする方法を見つけようとする
あなたのユースケース。 😄


あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/firebase/firebase-tools/issues/33#issuecomment-355683821
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AX5XbtVDQSPOIAZFyozujQQUektf2WM1ks5tHqM8gaJpZM4CtPYG

-
「工学を勉強しました」

守秘義務の通知:この電子メールメッセージの内容と
添付ファイルは、宛先のみを対象としており、次のものが含まれる場合があります。
機密情報および/または特権情報であり、法的に保護されている場合があります
開示から。 その後、テクノロジー企業、ボット、ハッカー、
政府機関、およびマーケター。 このメッセージのセキュリティはありません、
そしてそれはいつでもInstagramで共有されるかもしれません。 これでよければ、
答えてください。 どこにもセキュリティやプライバシーは実際にはありません。 場合
あなたはキャンプに行き、人々と顔を合わせて話したいと思うかもしれないことに同意しません
昔のように。

@mbleighは、この観点がサーバーレスの精神にやや反対であり、firebaseのようなBaaS / FaaSプロバイダーを使用しているのではないでしょうか? 過去数年間でSPAに向かう傾向があるため、これはかなり一般的なユースケースであるため、たとえばnetlifyやroastなどの競合他社が取り組んでいます。 それらは小さいですが、これをホストすることは理にかなっており、重要な発見可能性と共有可能性とともに、より速いロード時間を提供します。

顧客の開発とメンテナンスのオーバーヘッドを追加するのではなく、オプションの事前レンダリングサービス、または少なくともprerender.ioなどのサードパーティサービスと統合する機能が大幅に改善されます。

Firebaseは本当に優れたプラットフォームですが、モバイル指向のようで、ホスティングが私にとって唯一のつまらない部分です。

迅速な対応ありがとうございます。

@mbleigh

一般に、事前レンダリングが必要なコンテンツは、サーバー側のレンダリングによって最適に提供されるコンテンツでもあることがわかりました(パフォーマンスと初回ロードの理由から)。

@Pushplaybangのスポットオンの議論は別として、私はあなたの議論に反対しなければなりません。 一つには、この分野で決定を下すのはアプリケーション開発者(つまりあなたたちではない)次第です。 単なるページパフォーマンスの考慮事項は、他の同様に重要なアーキテクチャ上の決定とバランスを取る必要があります。

単一ページのアプリまたはアプリのセクションは、ある程度のクライアント側のレンダリングに頼る必要があり、残念ながら、グーグル自身を含むクローラーは、そのようなページのインデックス作成がまだあまり得意ではありません。 グーグルに私のウェブサイトを適切にインデックス付けさせる試みが何ヶ月も失敗した後、私はPrerenderIOに頼らなければなりませんでした。これにより、__インデックス作成の問題のためだけに__express.jsサーバーベースのアプローチを維持する必要がありました。

クライアント側で検出されたディープURLに応じて任意の製品をレンダリングする/product/**.htmlページがあるWebサイトを考えてみてください。 この設計の背後にある理論的根拠は、ブラウザーとcdnキャッシュを考慮しても、製品の実際の個別のページをロードすることは、別の製品のデータをロードしてURLを変更しながらレンダリングするほど、UXの観点からはスムーズではないということです。 顧客は、eコマースWebサイトでbrowsign-to-buyを行うときにほとんどの時間を製品ページに費やし、多くの場合、「関連製品」リンクまたはページ内ajax検索リンクを介して他の製品に移動します。

クローキングで罰せられないように、私たちは不条理な(IMHO)_escaped_fragment_メカニズムで立ち往生しています... Googleは、このユビキタスな問題に対するきちんとした解決策を持つエンジニアを雇うのが難しいと感じていますか?

ドキュメント__unjustizable__には、ウェブサイト/ウェブアプリのインデックス作成セクションがまったくないことさえあります。
モバイルアプリが消費者市場を支配するかもしれませんが、B2Bはどうですか? ほとんどのオフィス部門はデスクトップコンピュータで動作します。 研究開発部門や購買部門に到達するためにデスクトップWebサイトのインデックスを作成することは、「必要なこと」ではなく、B2Bサプライヤービジネスにとって重要です。

光沢のあるガジェットで実行されている派手なアプリがより多くの収益を上げるため、Firebase / Googleがこれに関心がない場合は、それを知っておくと便利です。 忠実なテクノロジー採用者に回避的な答えを与える4年間は、誰の知性にも非常に侮辱的です。

ランティ? はい。ただし、追加のインフラストラクチャコスト、追加の開発時間、および顧客に対するクローラーの予期しない動作を正当化する必要があるのは私です。

この問題が公開されてから4年間は、少しばかげているように見えます。 @ cleverplatypus-あなたの感情にこれ以上同意できませんでした。

この問題領域は全体として私たちが考えるのをやめたものではありませんが、エスケープされたフラグメントの事前レンダリングの当面の計画はまだありません。

静的なシングルページアプリが事前レンダリングの恩恵を受けることができる場合があることを私は認識しています。 ただし、これらのタイプのサイトのほとんど(すべてではない)のケースでは、任意のURLからSPAをブートストラップできるサーバー側のレンダリングの方が優れていると私は信じています。

私たちの目標は、FirebaseHostingをあらゆる種類のウェブエクスペリエンスを提供する素晴らしいプラットフォームにすることです。 このスレッドで提供された率直で熱心なフィードバックに感謝しますが、リソースは限られており、顧客ベース全体に最大の影響を与えると思われる作業を優先する必要があります。 自分が強く感じている機能の優先順位付けについて考えを変えたい場合は、機能リクエスト

会話を進める場所が本当に残っているとは思わないので、このスレッドを閉じますが、Cloud Functionsの統合によって十分なサービスを受けていない人は、事前レンダリングの機能リクエストを提出することをお勧めします。需要の大きさを直接確認できます!

Firebase Hostingをご利用いただきありがとうございます、すべて😸

このページは役に立ちましたか?
0 / 5 - 0 評価