Firebase-tools: Gunakan hosting dengan prerender.io

Dibuat pada 10 Okt 2014  ·  93Komentar  ·  Sumber: firebase/firebase-tools

Hai

Saya bertanya-tanya apakah ada cara untuk menggunakan Firebase hosting bersama dengan layanan seperti prerender.io?
Dengan cara ini dimungkinkan untuk menerapkan aplikasi web (yaitu aplikasi angularjs) dengan kemampuan SEO.

Terima kasih

question

Komentar yang paling membantu

Hanya ingin cepat berpadu bahwa kami pasti memiliki ini di radar kami. Ini penting, tetapi begitu juga banyak hal lainnya (seperti yang disebutkan Kato). Kami memiliki beberapa ide tentang beberapa cara hebat untuk mengatasi masalah ini, tetapi mereka memiliki beberapa ketergantungan yang harus kami singkirkan terlebih dahulu. Cobalah untuk tetap bersabar dan ketahuilah bahwa ini pasti ada di pikiran kita!

Semua 93 komentar

Hai,

Saat ini, aturan penulisan ulang / pengalihan Firebase Hosting tidak cukup mendetail untuk layanan prapenguraian, tetapi beberapa pelanggan kami telah berhasil membangun langkah pra-perenderan ke dalam proses pembuatan mereka untuk situs yang cukup statis menggunakan html5 pushState. Mereka melakukan prarender setiap halaman berdasarkan aplikasi satu halaman sehingga konten yang benar disajikan ke crawler, kemudian jika pengguna menavigasi ke halaman lain, aplikasi web mengambil alih dan merender tanpa memuat ulang halaman

Ini jelas sangat rumit dan jelas tidak ideal, tetapi kami sedang berusaha untuk membuatnya lebih mudah

Semoga membantu

Chris

Saya menyadari ini baru dua bulan, tetapi apakah ada pembaruan tentang ini? Karena kalian sekarang dimiliki oleh Google, saya berasumsi bahwa mereka ingin situs yang dihosting dengan firebase diindeks oleh layanan pencarian mereka.

Kami tidak memiliki pembaruan khusus tentang ini saat ini, hanya saja SEO jelas penting bagi kami dan menjaga agar Firebase Hosting tetap relevan dengan pengembang. Saya berharap dapat mengabari Anda segera

Hai kawan! Saya hanya ingin tahu apa status update kali ini? apakah itu akan datang dalam waktu dekat? Saya menggunakan Firebase hosting dan hebatnya satu-satunya hal yang saya khawatirkan adalah SEO, situs saya tidak muncul di mana pun di google, juga saya mencari integrasi seo dengan firebase dan saya tidak dapat menemukan solusi apa pun. Saya sangat ingin menyimpan semuanya di satu tempat, jadi sayang sekali untuk beralih ke layanan lain yang dapat menyajikan halaman saya ke mesin crawler google. Ini akan menjadi peningkatan yang sangat besar karena saya tahu sekarang Firebase dimiliki oleh Google. Terima kasih!

Juga masih tertarik dengan layanan ini. Terima kasih!

Menambahkan suara saya ke utas - akan sangat menyenangkan memiliki fitur ini!

+1

Saya menunggu ini juga.

Sebagai alternatif, saya akan menggunakan https://divshot.com + firebase.

+1

Karena pengumuman penggabungan DIvshot dan Firebase baru-baru ini, masalah ini muncul lagi. Saya sebenarnya telah pindah ke Divshot untuk menggunakan domain kustom gratis dan kemampuan prerender.io. Bagaimana fireabse akan menangani masalah tersebut? Apakah Anda akan menambahkan domain kustom ke tingkat gratis? Bagaimana dengan prerender.io?

Kami sedang menyelidiki cara agar kami dapat menghadirkan JS prapenguraian ke Firebase Hosting, tetapi tidak memiliki rencana pasti untuk dibagikan saat ini. (Catatan pribadi: Saya sangat ingin melihatnya terjadi).

Karena Firebase berpendapat bahwa semua situs harus hanya HTTPS, kami mengelola penyediaan sertifikat SSL atas nama pengguna kami. Biaya yang diperlukan untuk melakukannya mencegah kami menawarkan hosting domain ubahsuaian gratis.

Terima kasih atas jawaban yang sangat cepat (permainan kata-kata).

Beberapa jenis kemampuan SEO lebih dari yang dibutuhkan untuk platform hosting aplikasi web statis, jadi saya hanya berharap kalian berhasil membuatnya berfungsi hingga pertengahan Desember, jika tidak, banyak pengembang perlu beralih ke penyedia hosting jadul (sayangnya termasuk saya ).

Jawaban kedua masuk akal dan saya mempertimbangkan untuk melompat ke tingkat berbayar, sayang sekali tidak memberikan skala tambahan yang sama dengan Anda.

100% situs Firebase Hosting ada di CDN Fastly (permainan kata-kata yang dimuntahkan). Anda mendapatkan semua keuntungan dari paket berkinerja tinggi Divshot bahkan pada paket gratisnya (tidak hanya pada domain khusus). Sedangkan untuk bandwidth, 10GB akhirnya menjadi _lot_ band untuk situs statis.

Saya harus mengakui bahwa saya belum memikirkan fasilitas kinerja tinggi Divshot. Bagaimanapun, sayang sekali saya mungkin perlu memigrasi aplikasi saya dan menyiapkan backend (dan menunda fitur baru!), Sementara gelar CS memakan hampir semua waktu saya. Meskipun proyek saya tidak terlalu maju, orang lain mungkin mengalami penundaan yang sangat besar, jadi sekali lagi saya sangat berharap Firebase akan membantu kita menjadi ramah SEO atau mungkin Divshot akan menunda penutupannya. Saya mengerti ini mungkin bukan pilihan, tetapi jika beberapa dari kita akan bermigrasi, mereka mungkin tidak akan pernah kembali.

Selamat @mbleigh atas akuisisi ini!

@DamodarSojka , saya setuju dengan Anda sepenuhnya. Saya adalah pengguna berbayar Divshot yang sudah ada. Prapenguraian adalah suatu keharusan untuk pemasaran / berbagi situs web saya di Facebook. Jika Firebase tidak segera menawarkan kemampuan ini, saya harus bermigrasi ke layanan hosting web lain.

1 untuk kemampuan SEO

Kami juga membayar pelanggan Divshot dan dukungan Prerender diperlukan bagi kami. Dukungan pra-penguraian di Divshot tidak ideal (karena URL production.blabla.divshot.io setelah dibagikan) tetapi jika tidak ada dukungan Prerender di Firebase, kami tidak dapat menggunakannya. Terima kasih.

Demikian pula, SEO adalah yang paling penting, apakah Anda menggunakan prerender.io atau solusi serupa lainnya. Ini perlu ditangani di Firebase sebelum divshot dihentikan.

Yup masih kesulitan dengan seo

+1 - Pelanggan Divshot Berbayar, akan membutuhkan dukungan Prapenguraian untuk bermigrasi ke Firebase.

Completley setuju. Firebase bukanlah pengganti Divshot jika tidak memiliki kemampuan prapenguraian. Saya adalah pengguna berbayar Divshot. Dengan pemberitahuan dua bulan tentang Divshot yang ditutup. Apakah saya harus bekerja untuk bermigrasi ke layanan lain? Apakah saya harus menghabiskan waktu saya untuk mengkonfigurasi server? Atau tetap fokus pada apa yang saya lakukan? Bukankah ini ide layanan? Tidak harus berurusan dengan masalah server? Jelaskan apakah Firebase akan menjadi opsi untuk 14 Desember atau haruskah saya meluangkan waktu untuk mengonfigurasi server.

Tuan-tuan, Mike telah menyatakan, secara keseluruhan, status fitur ini: Kami sedang menyelidiki cara agar kami dapat menghadirkan prapenguraian JS ke Firebase Hosting, tetapi tidak memiliki rencana pasti untuk dibagikan saat ini. (Catatan pribadi: Saya sangat ingin melihatnya terjadi).

Tidak ada garis waktu. Kami menginginkannya seperti halnya Anda.

Anda harus memutuskan sendiri apa yang harus Anda lakukan. Kami tidak memiliki peta jalan umum. Kami tidak dapat menjamin apa pun pada timeline apa pun, berapa pun jumlah permintaan atau kueri. Maaf itu bukan jawaban yang menyenangkan, tapi semoga yang realistis lebih bermanfaat untuk perencanaan Anda.

☼, Kato

Senang melihat Anda benar-benar peduli :) Terima kasih teman-teman!

@mbleigh / @katowulf Satu pertanyaan tentang rencana untuk menghadirkan prapenguraian JS ke Firebase: Bagaimana cara agar prapenguraian JS lebih baik dengan dukungan SEO yang ditawarkan Firebase?

Berdasarkan jawaban SO ini, Firebase sudah menyediakan SEO out-of-the-box sejak ng-conf 2015.

Jadi saya tidak mendapatkan keuntungan dari masih mencoba menggunakan Prerender.io di Firebase.

@douglascorrea untuk Google SEO, peningkatannya akan kecil, tetapi (ternyata) Google bukan satu-satunya perayap di luar sana: smile:

Keuntungan terbesar untuk ini adalah untuk situs yang ingin menawarkan dukungan yang lebih baik untuk tag OpenGraph Facebook, kartu Twitter, dan mesin pencari non-Google.

Terima kasih @mbleigh , ini menjelaskan banyak hal dan membuat saya berpikir bahwa kami sangat menginginkan dukungan itu, atau semacam alternatif seperti @drtriumph dalam komentarnya.

Saya sedang mencari solusi, dan saya menemukan detail berikut ini yang bisa berguna untuk pembaca lain:

  • Pada Oktober 2015, Google menghentikan rekomendasi penggunaan _escaped_fragment_ dan hashbang (! #). Jadi, untuk Google, setiap SPA harus menggunakan html5 pushstate (html5mode on angularjs). Tetapi mereka akan terus mendukung hashbang (! #) Dan menerjemahkannya menjadi fragmen yang lolos untuk sementara.
  • Facebook dan mungkin perayap lainnya masih membutuhkan escaped_fragment, notasi otomatis menerjemahkan hashbang ke _escaped_fragment. Dan mungkin crawler lain melakukan hal yang sama karena itu adalah rekomendasi sebelumnya dari google.
  • Karena Firebase belum mendukung pengalihan berdasarkan User-Agent, harapan kami tetap pada crawler yang menerjemahkan hasbang (! #) Ke escape_fragament seperti ini:
    Jika URL Anda terlihat seperti ini:
    http://www.example.com/#!/user/1
    Kemudian akses URL Anda seperti ini:
    http://www.example.com/?_escaped_fragment_=/user/1

Jadi, untuk sementara, satu ide untuk mengetahuinya adalah:

  • Jangan gunakan html5 pushstate (mode html5 di Angular) dan gunakan hashbang sebagai gantinya (! #)
  • Gunakan prerender.io untuk membuat versi statis / cache dari setiap halaman yang Anda inginkan dalam aplikasi Anda (seperti proses pra-render normal).
  • Kembangkan plugin yang menyimpan versi cache tersebut dalam struktur folder yang dimulai dengan folder ?_escaped_fragment_= dan buat folder seperti:
    Jika URL Anda terlihat seperti ini:
    http://www.example.com/#!/user/1
    Folder yang dihasilkan akan menjadi
    ?_escaped_fragment_= +- /user +- /1

Dimana 1 file tersebut akan menjadi file html yang sebenarnya.

  • Terapkan folder itu di folder root firebase Anda menggunakan firebase-tools (proses ini dapat diotomatiskan dalam tugas cron atau semacamnya).

Bagaimana menurut saya ini akan berhasil:

  • Saat crawler melihat url hashbang Anda, ia akan mencoba mencapai URL ?_escaped_fragment_= . Karena kami memiliki file HTML yang sebenarnya di folder tersebut, Firebase akan melayani kemudian dan tidak dialihkan ke index.html sehingga HTML yang dibaca oleh crawler akan menjadi versi yang di-cache dan bukan AngularJS.

Untuk mencapainya, kita perlu membuat tugas terjadwal yang menjalankan prapenguraian untuk setiap halaman, menyimpan folder tersebut, dan menjalankan penerapan firebase.

Karena penerapan firebase tidak mendukung penerapan sebagian (sinkronisasi atau inkremental), kami harus menyimpan salinan penerapan yang diperbarui di server yang akan bertanggung jawab untuk proses ini.

Saya akan mencoba mengaturnya dan saya akan memberi tahu Anda jika berhasil.

Bisakah Anda mengizinkan kami menyetel "X-Prerender-Token" seperti yang kami lakukan pada tombol header lainnya ???
https://www.firebase.com/docs/hosting/guide/full-config.html
https://prerender.io/install-token

+1

@ srk9 harap kirimkan masalah terpisah daripada menggunakan kembali utas ini.

Mengapa masalah ini ditutup? Saya tidak melihat solusi diposting.

@douglascorrea , apa yang terjadi dengan ide Anda?

Terima kasih,
- D

Hai @bethuneco , maaf karena tidak memposting hasilnya di sini.

Sebenarnya saya akan menulis artikel tapi kemudian saya menyadari bahwa solusi ini akan terdiri dari banyak "mesin" untuk membuatnya bekerja dalam produksi, dan saya merasa tidak nyaman untuk "merekomendasikan" itu karena saya tidak tahu caranya itu akan berperilaku dalam skala besar.

Tetapi pada dasarnya, seperti yang saya jelaskan sebelumnya, saya memerlukan server "penerapan / prapenguraian" yang, untuk setiap penerapan, melakukan prapenguraian / skrap semua halaman dan menyimpan HTML yang dihasilkan dalam folder yang dijelaskan di atas (/? _ Escaped_framgment_ / xxxx). HTML "nyata / fisik" itu akan menjadi laman "prapenguraian" kami.

Jadi setiap kali crawler google / facebook / twitter membuka halaman kami dan meminta awalan "escaped fragment" melalui "? _Escaped_fragment", itu sebenarnya akan mengarah ke folder asli dengan HTML asli, kemudian HTML tersebut akan diindeks.
Saat pengguna sebenarnya membuka aplikasi, mereka tidak akan menggunakan? _Escaped_fragment, sehingga mereka akan menerima halaman dinamis.

Masalahnya adalah "solusi" ini adalah kita harus terus menghasilkan HTML untuk setiap halaman tambahan. Misalnya, jika aplikasi Anda adalah CMS sederhana, untuk setiap postingan / artikel / halaman baru, Anda perlu menjalankan proses untuk membuat halaman HTML baru. Tetapi masalahnya akan menjadi lebih besar ketika kita berbicara tentang jaringan sosial dinamis misalnya, di mana setiap pengguna dapat menghasilkan ratusan halaman "praperenderable", maka praperender / crawler internal Anda harus berjalan sepanjang waktu. Dan itu, di dunia nyata bisa menjadi penghenti.

Ini adalah solusi yang sangat "tipuan" yang dapat bekerja untuk aplikasi kecil, tetapi tidak untuk aplikasi yang sangat besar, karena kami benar-benar membuat HTML agar berada di sana saat perayap pergi dan tidak secara otomatis mengarahkan perayap ke layanan prapenguraian kami yang akan melakukan prapenguraian secara online (seperti proses pra-penguraian normal adalah).

Jadi, sekarang, kita harus menggunakan server Nginx sebagai server statis agar dapat melakukan praperenderan, atau menggunakan pesaing Divshot seperti https://www.netlify.com/ yang menyediakan Prerender out-of-the-box untuk Aplikasi Halaman Tunggal .

@bayu_joo

Terima kasih atas penjelasan yang diperluas itu. Anda adalah orang pertama yang menyebut Netlify, jadi saya akan memeriksanya.

Anda benar bahwa prapenguraian semuanya hanya cocok untuk situs kecil. Untungnya, aplikasi saya cukup kecil (maksimal sekitar 1.200 halaman), sehingga dapat berfungsi.

Solusi paling sederhana (dan yang dihindari Google) adalah Javascript prapenguraian dan menyajikan HTML saat agen pengguna robot terdeteksi. Google telah mendemonstrasikan rendering di luar browser jadi ini tidak sulit secara teknis. Ini secara strategis menantang bagi mereka karena tampaknya membantu pesaing dalam bisnis periklanan.

Jika saya mendapatkan sesuatu yang berfungsi, saya akan memposting pembaruan di sini.

Izinkan saya memberikan kejelasan di sini untuk siapa saja yang mungkin bingung:

Apakah Firebase Hosting mendukung prapenguraian JS di server? Tidak, tidak. Prapenguraian sisi server adalah sesuatu yang ingin kami dukung dan ada dalam peta jalan jangka panjang kami, tetapi kami tidak memiliki tanggal atau jadwal khusus untuk diumumkan saat ini. Kami tahu bahwa ini adalah masalah, terutama bagi mereka yang menggunakan berbagi Facebook atau kartu Twitter, dan kami berharap dapat berbagi lebih banyak tentang ini di masa mendatang.

Tidak bisakah Anda mendukung misalnya X-Prerender-Token ? Tidak, itu tidak akan berhasil. Prapenguraian harus menyajikan _actual prerendered content_ di ?_escaped_fragment_= URL, yang berarti bahwa ini bukan hanya tajuk tetapi juga konten yang harus diperhatikan dan ditangani server dengan benar. Tidak ada solusi setengah-setengah seperti yang kita harapkan.

Jenis prapenguraian apa yang mungkin dilakukan? Satu-satunya jenis "prapenguraian" nyata yang dapat Anda lakukan saat ini adalah kompilasi situs statis. Biasanya ini dilakukan dengan sesuatu seperti Jekyll, tetapi tentu saja mungkin menggunakan browser tanpa kepala secara lokal untuk "melakukan prapenguraian" situs yang lebih dinamis. Anda harus merender setiap URL secara menyeluruh dan kemudian menerapkannya, jadi ini bukan kasus penggunaan yang fantastis saat ini. Perhatikan juga bahwa membuat nama file dengan ?_escaped_fragment_ di dalamnya _tidak mungkin, karena CDN menghapus parameter kueri dan ini umumnya bukan kasus penggunaan yang didukung.

Apakah ini semacam hal strategis Google untuk menahan perayap lain? Tidak, sama sekali tidak. Kami sangat ingin mendukung keuntungan yang dibawa oleh prapenguraian ke Firebase Hosting. Itu semua hanya soal waktu dan sumber daya.

Saya harus beralih dari firebase hosting karena masalah tag media sosial / SEO alternatif. Ini adalah masalah besar ketika orang non-teknologi melihat kita tidak memiliki gambar yang bagus di link kita seperti orang lain di internet.

Anda dapat melakukan praperenderan dengan middleware phantomjs dan prerender. Ini open source dan berfungsi dengan baik, tetapi saya menggunakan prerender.io untuk menghindari pekerjaan operasi. Ini sedikit lambat pada permintaan pertama, tetapi Anda dapat menyimpan halaman dengan terlebih dahulu meminta setiap halaman.

Sangat menyenangkan untuk meminta semua halaman juga, karena Anda dapat menjalankan beberapa tes padanya, mengurai html untuk memastikan tag dan konten ditampilkan dengan benar.

Ada peringatan besar. Prapenguraian tidak berfungsi dengan data firebase langsung. Kok bisa? Data Firebase bersifat waktu nyata, koneksi tetap ada. Prapenguraian hanya satu kali, koneksi ditutup. Tidak ada cara untuk mengetahui kapan halaman selesai dirender, karena Anda tidak dapat menghitung permintaan.

Saya punya beberapa ide untuk memperbaikinya:

  1. Buat permintaan GET dengan setiap .on("value") firebase subscription. Lewati langganan jika itu adalah permintaan pra-penguraian. Lewati permintaan GET ketika itu adalah pengguna biasa. Ini tidak akan berfungsi untuk acara .on("child_*") .
  2. Setel flag prerender global ke false di bagian atas file entri utama Anda, lalu untuk setiap komponen halaman setel flag ke true setelah data dimuat. Dengan desain yang tepat, biasanya ada _loading state_ dan _error state_ dan _success state_ jadi dalam metode pembantu error / success state, setel flag ke true .

Ini menyebalkan, tetapi hanya beberapa halaman dinamis yang tidak ditampilkan dengan benar dan memerlukan perlakuan khusus. Menurut saya, manfaat statis lebih besar daripada biayanya.

@mbleigh menantikan apa yang akan kalian lakukan di masa depan. Dengan apa pun yang saya yakin bergabung dengan Google adalah satu langkah mundur, dua langkah maju.

Benar-benar berharap ada solusi. Satu- satunya alasan mengapa saya membutuhkan backend adalah juga kartu twitter dan opengraph. Tentu backend memberikan beberapa manfaat lain untuk aplikasi satu halaman seperti rendering isomorfik, tapi itu bagus untuk dimiliki. Tag Twitter dan OG penting untuk aplikasi apa pun yang perlu dibagikan.

Mungkinkah ada semacam aturan seperti penulisan ulang yang akan memerintahkan firebase backend untuk menyajikan objek / html ini atau itu dari database?

Objek semacam itu dapat disiapkan terlebih dahulu karena setiap berbagi dimulai dari, mengunjungi url atau melewati tombol Bagikan terlebih dahulu.

benjolan .. Saya baru saja kagum dengan Firebase dan kemudian menyadari bahwa saya tidak dapat menggunakannya, membaca komentar ini ..
Karena saya juga membutuhkan layanan seperti Prerender untuk bekerja. Jadi ada apa dengan perkembangan ini ??

Kumpulkan Google! Anda adalah mesin pencari freegin !! :tertawa:

Serius sih. Ini sangat penting. Ini mungkin hanya 'hal terpenting yang pernah ada.

Saya tahu itu bercanda, tetapi untuk menegaskan, apakah komentar itu ditujukan ke Google Penelusuran atau Google Firebase? Hanya satu di antaranya yang merupakan mesin telusur dan hanya satu yang menyediakan Firebase Hosting (dan prakompilasi halaman web juga tidak mencakup keduanya, meskipun nilai tambah yang jelas agar Hosting berfungsi lebih baik dengan alat yang menyediakan ini).

Pada catatan housekeeping terkait, ini juga tidak terkait dengan firebase-tools (mis. Pelacak masalah OSS ini). Saya akan memastikan bahwa suara Anda ditambahkan ke diskusi prioritas; milis mungkin adalah tempat terbaik untuk menjangkau permintaan fitur inti di masa mendatang.

Yang terpenting, kami belum melupakan ini. Itu masih sangat penting bagi kami. Sedikit kurang penting daripada mengintegrasikan dengan Google Cloud Functions dan memberikan wawasan yang kokoh melalui Analytics, Crash Reporting, dan Test Labs, tetapi tetap penting.

Saya akan membahas ini lagi ketika kita membahas prioritas berikutnya. Kami sangat menghargai Anda menambahkan suara Anda pada umpan balik. ☼☼☼

terima kasih atas upaya Anda di firebase @katowulf !!
Ini adalah satu-satunya hal yang mencegah saya menggunakan firebase sebagai "host" untuk aplikasi ng1 saya.

Anda tidak sendirian di sini. Yang lain mengalami batasan yang sama. Perhatikan bahwa karena Google sekarang dapat mengindeks konten yang dihasilkan JavaScript, dan ada beberapa ketentuan khusus untuk mengindeks konten Firebase, data Firebase yang tidak diautentikasi yang dimuat ke halaman Anda seharusnya sudah diindeks. Tetapi dukungan penuh pra-kompilator ada di radar.

@katowulf hanya sebagai headsup (jika Anda belum mengetahuinya atau melihatnya), tetapi masalah utamanya bukanlah crawler google. Saya pikir orang sudah tahu itu jika mereka menggunakan sesuatu seperti Prerender. Ini adalah crawler lain seperti misalnya LinkedIn, Facebook, Twitter, dan lainnya yang tidak puas. Mereka menginginkan konten statis

@samvloeberghs Namun, menurut saya, implikasi dari Google yang menyediakan dukungan ini adalah kemungkinan besar orang lain akan mengikuti. Jadi saya bermaksud untuk menyiratkan bahwa ini adalah langkah ke arah yang benar untuk menyebarkannya (dan setidaknya berfungsi dengan Google saat ini).

Tidak mungkin FB / LinkedIn / Twitter akan mengikuti kemampuan Google untuk bergerak maju secepat yang kita inginkan. Akan selalu ada pemain utama di belakang, dan kami tidak bisa mengabaikannya. Di sisi lain, Google sedang menyelesaikan masalah ini dengan mengerjakan NG2, yang akan menampilkan kompilasi sisi server menggunakan Angular Universal :) 👍

Sudut untuk menyelamatkan! Tunggu, apa maksudmu pembelajaran mesin tidak akan menyelesaikan semua ini?

Untuk menawarkan 2 sen saya, saya menemukan bahwa klien tampaknya menghargai kartu media sosial setidaknya sama seperti SEO. Berbicara dari proyek terbaru, Twitter / Facebook telah menjadi cara utama merek mempromosikan diri mereka sendiri melalui berbagi tautan ke situs web mereka.

Jelas SEO masih penting tetapi akankah menyerang kartu media sosial menjadi solusi yang lebih sederhana / jangka pendek? Karena kartu web hanyalah tag meta, bisakah Anda menentukan struktur di firebase.json (mirip dengan aturan keamanan)? Firebase kemudian dapat memasukkan tag meta yang tepat untuk perayap twitter / facebook, meskipun saya yakin tidak sesederhana itu 😄.

Terlepas dari itu, banyak terima kasih atas kerja bagus dan dukungan komunitas. Menantikan beberapa fitur firebase yang lebih menarik (fungsi cloud 👍!).

@katowulf , komentar saya adalah 'benjolan' yang kuat lebih dari apapun ... kalian melakukan beberapa pekerjaan luar biasa! Saya mengarahkan lelucon saya lebih ke Google secara keseluruhan. Namun, saya yakin Firebase adalah * divisi Google baru yang seharusnya memiliki seluruh masalah "SPA / PWA - perenderan halaman SEO" ini.

Pikiranku tentang ini adalah ...

Produk apa pun yang Google keluarkan harus berfungsi sempurna dengan semua platform yang kita gunakan saat ini, dan menjadi contoh cemerlang yang berhasil dan mencerminkan produk aslinya, Google Penelusuran.

SPA telah ada untuk beberapa saat sekarang..Google memiliki 2 di antaranya [Angular] & [Polymer]. Menerapkan SEO di dalamnya (Meta Tag / OpenGraph / Schema) adalah Blackbox utama (kecuali Anda adalah ninja backend). Merupakan berita bagus bahwa Google Penelusuran mulai memproses JS, tetapi ini jelas hanya separuh pertempuran (mungkin kurang).

Firebase, menjadi backend sebagai layanan (BaaS) sepertinya grup Google baru * yang sempurna untuk benar-benar memuluskan keseluruhan proses rendering halaman SPA ini. Saya tahu kalian akan menyiasatinya, tetapi saya sangat merasa ini harus menjadi fitur penting / prioritas utama.

Bayangkan membaca tajuk utama ini ...

FIREBASE HADIR ...
SEO Baru & Lebih Baik untuk semua aplikasi satu halaman (SPA) dan aplikasi web progresif (PWA) di luar kotak!

Pengembang akan berkumpul: +1:

Hanya ingin cepat berpadu bahwa kami pasti memiliki ini di radar kami. Ini penting, tetapi begitu juga banyak hal lainnya (seperti yang disebutkan Kato). Kami memiliki beberapa ide tentang beberapa cara hebat untuk mengatasi masalah ini, tetapi mereka memiliki beberapa ketergantungan yang harus kami singkirkan terlebih dahulu. Cobalah untuk tetap bersabar dan ketahuilah bahwa ini pasti ada di pikiran kita!

Ini mengecewakan. Sekarang saya menemukan diri saya mencari alternatif firebase ...

Sudah hampir 3 tahun ...

ada pembaruan tentang ini ..?

bukankah seharusnya ini berfungsi sekarang karena firebase memiliki divshot? perbarui PLZ!

Kami sangat menyadari keinginan untuk fungsi semacam ini, dan merupakan prioritas bagi kami untuk memberikan beberapa solusi yang lebih baik di sini. Aku masih belum punya jadwal untuk diumumkan, tapi kami belum melupakan kalian.

+1

:( :( :(

Kami sampai pada kesimpulan yang sama. Apa lagi yang kamu lihat? ;)

Saya hanya menggunakan Fungsi Firebase sebagai titik akhir tautan berbagi saya kemudian mengalihkan dengan JavaScript sebuah tautan.

Anda mungkin atau mungkin belum pernah melihat ini, tetapi Cloud Functions sekarang terintegrasi dengan Firebase Hosting !!!

Ini dapat dianggap sebagai solusi kanonis kami untuk rendering sisi server dengan Firebase Hosting. Nikmati!

@mbleigh OK jadi jika saya memiliki file header global dengan metadata seperti di bawah ini, saat ini ini tidak direplikasi di frontend. Jika saya menginstal fungsi Cloud, haruskah itu saja yang saya butuhkan untuk mengaktifkan fitur ini.

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

Luar biasa, terima kasih atas pembaruannya.

Pada 17 Mei 2017 17:39, [email protected] menulis "Michael Bleigh":

Anda mungkin atau mungkin belum pernah melihat ini, tetapi Cloud Functions sekarang terintegrasi
dengan Firebase Hosting https://firebase.google.com/docs/hosting/functions
!!!

Ini dapat dianggap sebagai solusi kanonis kami untuk rendering sisi server
dengan Firebase Hosting. Nikmati!

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-302268864 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AX5XbtWCdygdw4ozixK5_XcL2Dlznp4Jks5r65M-gaJpZM4CtPYG
.

Saya menyadari ini mungkin bukan masalah terbaik untuk komentar-komentar ini tetapi pencarian google masalah saya memang membawa saya ke sana dan tampaknya ada beberapa diskusi aktif jadi mohon maafkan saya!

Yang ingin saya lihat untuk memecahkan masalah perenderan template grafik terbuka untuk situs sosial di SPA yang dihosting di firebase - adalah kemampuan memuat keseimbangan melalui agen pengguna.

Saya ingin dapat menggunakan fungsi cloud untuk mengambil beberapa data template dari memcache / cloudql dan merender tag template ke platform sosial yang meminta, tetapi kembali ke hosting statis untuk semua klien lainnya. Maka kita tidak perlu rendering sisi server penuh untuk semua permintaan.

@cdharris Benar-benar, ATM, menulis ulang semua permintaan ke fungsi Saya sudah mencoba menggunakan window.location untuk membuat pengalihan tambahan (untuk klien / pengunjung) ke hosting statis, untuk tujuan SEO saya tidak berfungsi, mungkin untuk tujuan sosial.

@mbleigh adakah opsi untuk menulis ulang permintaan dari perayap / sosial yang membedakan mereka dari klien / pengunjung? Saya telah menguji dengan _escaped_fragment_ di antara ekspresi glob lainnya ... Tidak ada = / Terima kasih sebelumnya

Membuat keputusan apa yang harus dikembalikan dalam fungsi firebase bisa berhasil. Kita bisa katakan: apakah permintaan tersebut berasal dari Facebot? Kemudian kembalikan tag grafik terbuka ini. Jika tidak, kembalikan index.html. Tetapi bagaimana cara mengembalikan darn index.html dari fungsi firebase?

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

Pada 13 Sep 2017 4:34 AM, "Birowsky" [email protected] menulis:

Membuat keputusan konten dalam fungsi firebase bisa berhasil. Kita bisa bilang:
apakah permintaan tersebut berasal dari Facebot? Kemudian kembalikan tag grafik terbuka ini. Jika tidak,
mengembalikan index.html. Tetapi bagaimana cara mengembalikan darn index.html dari file
fungsi firebase?

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329140134 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AX5XbrXQNbVMhRmeZQTbx3Z3vi0c1HXTks5sh728gaJpZM4CtPYG
.

@megamindbrian apakah tersirat bahwa fungsi memiliki akses ke file yang dihosting? Apakah itu didokumentasikan di mana saja? Terima kasih!

Iya. Begitulah cara saya mengingat menggunakannya, pertanyaan bagus saya mencoba mencari dokumen.

Pada 13 Sep 2017 07:09, "Birowsky" [email protected] menulis:

@megamindbrian https://github.com/megamindbrian apakah tersirat bahwa file
fungsi memiliki akses ke file yang dihosting? Apakah itu didokumentasikan di mana saja?
Terima kasih, lagian!

-
Anda menerima ini karena Anda disebutkan.

Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

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

Pada 13 Sep 2017 07:09, "Birowsky" [email protected] menulis:

@megamindbrian https://github.com/megamindbrian apakah tersirat bahwa file
fungsi memiliki akses ke file yang dihosting? Apakah itu didokumentasikan di mana saja?
Terima kasih, lagian!

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

Yang ini menggunakan direktori sementara tetapi saya pikir ini juga berfungsi dengan file
Anda telah mengunggah bersama proyek Anda. Mungkin tidak berubah, itulah sebabnya
contohnya adalah memindahkan file untuk menyimpannya di tempat lain
https://firebase.google.com/docs/storage/extend-with-functions

Pada 13 Sep 2017 7:12 AM, "Brian Cullinan" [email protected] menulis:

Ini dia https://stackoverflow.com/questions/42960506/how-can-i-
baca-dan-tulis-ke-firebase-storage-from-dalam-cloud-functions-for-fir

Pada 13 Sep 2017 07:09, "Birowsky" [email protected] menulis:

@megamindbrian https://github.com/megamindbrian apakah tersirat bahwa file
fungsi memiliki akses ke file yang dihosting? Apakah itu didokumentasikan di mana saja?
Terima kasih, lagian!

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

Maaf, saya masih belum melihat pengenalan yang tepat tentang bagaimana fungsi secara konseptual dihubungkan ke file yang dihosting. Jika Anda mau menjelaskan, saya punya beberapa poin untuk Anda: https://stackoverflow.com/q/46192570/592641

Saya bisa membayangkan diri saya menjawabnya dengan contoh kode, tapi tidak jelas
bahwa dari dalam fungsi Anda, Anda dapat merespons dengan konten dari file di
proyek Anda? Ini bukan pengalihan.
Saya akan menggali beberapa kode lagi.

Pada 13 Sep 2017 7:18 pagi, "Birowsky" [email protected] menulis:

Maaf, saya masih belum melihat pengenalan yang tepat tentang bagaimana fungsinya
secara konseptual terhubung ke file yang dihosting. Jika Anda mau menjelaskan, saya mengerti
beberapa poin untuk Anda: https://stackoverflow.com/q/46192570/592641

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329182385 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AX5XbnCSoaKUuVKUnfha5A-4K-p76kZ3ks5sh-QygaJpZM4CtPYG
.

@megamindbrian Saya baru saja mencoba fs.readFileSync('./index.html') tapi sayangnya, file tersebut tidak ada. Saya juga berharap menemukan file yang dihosting di beberapa keranjang penyimpanan yang dibuat secara implisit, tidak berhasil. Bagaimana Anda akan melanjutkan?

Jika Anda menyusun direktori Hosting public di dalam direktori functions , direktori itu akan tersedia di sana.

@Birowsky Yup, berikut adalah cara saya membaca file dari fungsi cloud, misalnya index.js:

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

Tetapi jika tata letak proyek Anda adalah:

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

Anda perlu menyalin file yang relevan dari / dist ke / functions

Masalah ini sudah sekitar 3 tahun (sejauh ini) dan masih belum berhasil pada saat ini ????

Mungkin berarti Google akan meninggalkan firebase di tengah-tengah mendukung semua
aplikasi kita.

Solusi resmi kami untuk masalah kelas ini adalah dengan menggunakan Cloud Functions
untuk melakukan perenderan sisi server untuk konten yang perlu terlihat statis
crawler:

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

Ini adalah solusi yang lebih kuat dan umum yang memungkinkan untuk semua jenis
hal-hal keren!

Jika Anda merasa yakin masih ada sesuatu yang hilang, tolong beri tahu kami
kasus penggunaan mendetail sehingga kami dapat memikirkan cara menanganinya! :)

Pada Kamis, 14 Sep 2017, 15.57 Brian Cullinan [email protected]
menulis:

Mungkin berarti Google dengan meninggalkan firebase di tengah mendukung semua
aplikasi kita.

Pada Kamis, 14 Sep 2017 jam 15.52, tofanelli [email protected]
menulis:

Masalah ini sudah sekitar 3 tahun (sejauh ini) dan masih belum berhasil pada saat ini ????

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
<
https://github.com/firebase/firebase-tools/issues/33#issuecomment -329630338
,
atau nonaktifkan utasnya
<
https://github.com/notifications/unsubscribe-auth/AX5XbhBSDSl6TStSv7M02Dx0brb9MOPbks5sia44gaJpZM4CtPYG

.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329631266 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AAAD_iI6L-yu3RTECI88a2y_ZOzIxdDQks5sia9rgaJpZM4CtPYG
.

@mbleigh Apakah Anda sudah bisa menggunakan fungsi cloud di root domain firebase?

Ya, jika saya memahami Anda dengan benar. Apakah Anda pernah mengalami masalah sebelumnya?

Pada Kamis, 14 Sep 2017, 18.38 Brian Cullinan [email protected]
menulis:

@mbleigh https://github.com/mbleigh Dapatkah Anda menggunakan fungsi cloud di a
direktori root firebase?

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329653711 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AAAD_g7BV3TMM_5nVX92_-3ai_mZHfHBks5sidUvgaJpZM4CtPYG
.

@tokopedia

Ini adalah solusi yang lebih kuat dan umum yang memungkinkan semua jenis hal keren!

SSR membuat sistem kami lebih kompleks 😢
Menurut saya, prapenguraian lebih keren tidak selalu tetapi sering 💡
misalnya Facebook OGP, Twitter Cards, SEO untuk non-Google

@mbleigh @megamindbrian Terima kasih atas pesannya. Saya telah membuat hosting saya mengarahkan setiap permintaan ke fungsi saya dan respons index.html yang dihosting di functions/build/index.html kepada klien. Tetapi saya tidak tahu bagaimana cara mengonfirmasi apakah permintaan datang dari FaceBot? Saya telah mencoba menggunakan alat debugging facebook untuk mengakses url situs web saya, saya kira fungsi cloud akan dipicu, tetapi ternyata tidak. Saya tidak terbiasa dengan pengembangan back-end, dapatkah Anda memberi saya beberapa petunjuk? Terima kasih.

Saat menggunakan alat Facebook, pastikan Anda menggunakan tombol yang membaca sesuatu
seperti "Ambil salinan baru", di dekat pratinjau.

Pada hari Selasa, 17 Okt 2017 jam 8:29 pagi, Jude [email protected] menulis:

@mbleigh https://gub.com/bleigh @megamindbrian
https://github.com/megamindbrian Terima kasih atas pesan Anda. saya sudah
membuat hosting saya mengarahkan setiap permintaan ke fungsi dan respons saya
index.html yang dihosting di functions / build / index.html untuk klien. Tapi
Saya tidak tahu bagaimana cara mengonfirmasi apakah permintaan datang dari FaceBot? saya telah mencoba
menggunakan alat debugging facebook untuk mengakses url situs web saya, saya kira
fungsi cloud akan dipicu, tetapi ternyata tidak. Saya tidak akrab dengan
pengembangan back-end, dapatkah Anda memberi saya beberapa petunjuk? Terima kasih.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-337266581 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AX5XbrCQ3mowcUnJjWYWsaiScoN1y4l0ks5stMfcgaJpZM4CtPYG
.

-
PEMBERITAHUAN KERAHASIAAN: Isi pesan email ini dan apa pun
lampiran dimaksudkan hanya untuk penerima dan mungkin berisi
informasi rahasia dan / atau hak istimewa dan mungkin dilindungi secara hukum
dari pengungkapan. Kemudian dibagikan dengan perusahaan teknologi, bot, peretas,
lembaga pemerintah, dan pemasar. Keamanan pesan ini tidak ada,
dan dapat dibagikan di Instagram kapan saja. Jika Anda setuju dengan ini,
tolong direspon. Sebenarnya tidak ada keamanan atau privasi di mana pun. Jika
Anda tidak setuju Anda mungkin ingin pergi berkemah dan berbicara dengan orang secara langsung
seperti dulu.

Apakah ada sesuatu di log firebase Anda seperti "Eksekusi fungsi dimulai"?

Pada hari Selasa, 17 Okt 2017 jam 8:37 AM, Brian Cullinan [email protected]
menulis:

Saat menggunakan alat Facebook, pastikan Anda menggunakan tombol yang bertuliskan
sesuatu seperti "Ambil salinan baru", di dekat pratinjau.

Pada hari Selasa, 17 Okt 2017 jam 8:29 pagi, Jude [email protected] menulis:

@mbleigh https://gub.com/bleigh @megamindbrian
https://github.com/megamindbrian Terima kasih atas pesan Anda. saya sudah
membuat hosting saya mengarahkan setiap permintaan ke fungsi dan respons saya
index.html yang dihosting di functions / build / index.html untuk klien. Tapi
Saya tidak tahu bagaimana cara mengonfirmasi apakah permintaan datang dari FaceBot? saya telah mencoba
menggunakan alat debugging facebook untuk mengakses url situs web saya, saya kira
fungsi cloud akan dipicu, tetapi ternyata tidak. Saya tidak akrab dengan
pengembangan back-end, dapatkah Anda memberi saya beberapa petunjuk? Terima kasih.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-337266581 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AX5XbrCQ3mowcUnJjWYWsaiScoN1y4l0ks5stMfcgaJpZM4CtPYG
.

-
PEMBERITAHUAN KERAHASIAAN: Isi pesan email ini dan apa pun
lampiran dimaksudkan hanya untuk penerima dan mungkin berisi
informasi rahasia dan / atau hak istimewa dan mungkin dilindungi secara hukum
dari pengungkapan. Kemudian dibagikan dengan perusahaan teknologi, bot, peretas,
lembaga pemerintah, dan pemasar. Keamanan pesan ini tidak ada,
dan dapat dibagikan di Instagram kapan saja. Jika Anda setuju dengan ini,
tolong direspon. Sebenarnya tidak ada keamanan atau privasi di mana pun. Jika
Anda tidak setuju Anda mungkin ingin pergi berkemah dan berbicara dengan orang secara langsung
seperti dulu.

-
PEMBERITAHUAN KERAHASIAAN: Isi pesan email ini dan apa pun
lampiran dimaksudkan hanya untuk penerima dan mungkin berisi
informasi rahasia dan / atau hak istimewa dan mungkin dilindungi secara hukum
dari pengungkapan. Kemudian dibagikan dengan perusahaan teknologi, bot, peretas,
lembaga pemerintah, dan pemasar. Keamanan pesan ini tidak ada,
dan dapat dibagikan di Instagram kapan saja. Jika Anda setuju dengan ini,
tolong direspon. Sebenarnya tidak ada keamanan atau privasi di mana pun. Jika
Anda tidak setuju Anda mungkin ingin pergi berkemah dan berbicara dengan orang secara langsung
seperti dulu.

Fungsi @megamindbrian dipicu jika saya mengakses situs web saya dengan browser. Tapi itu tidak dipicu setelah menggunakan alat facebook untuk mengambil data halaman.

@judewang lihat https://firebase.google.com/docs/hosting/functions#when_is_cached_content_served

Untuk pengujian cepat dan kotor, Anda dapat mencoba menambahkan beberapa parameter kueri acak ke URL yang diuji.

Jadi pertanyaan awalnya adalah bagaimana menggunakan pra-penguraian. Solusi ini tidak menyelesaikan masalah integrasi prapenguraian, tetapi menyelesaikan grafik terbuka untuk aplikasi satu halaman.

  1. Dalam skrip build saya, saya menyalin public/index.html ke functions/hosting/index.html
  2. Di firebase.json saya menambahkan aturan penulisan ulang untuk menunjuk ke fungsi awan yang disebut "host"
"hosting": {
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "function": "host"
      }
    ]
  }
  1. Saya mendefinisikan fungsi cloud yang disebut host . Dalam kebanyakan kasus, ini hanya mengembalikan file index.html yang saya salin ke functions/hosting/index.html , tetapi jika agennya adalah salah satu pengurai grafik terbuka yang diketahui, saya mengembalikan data database dalam format grafik terbuka berdasarkan rute.
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());
  }
});

Saya pikir itu saja. Semoga ini bisa membantu beberapa orang!

Saya harus mengatakan ini mengecewakan, pesaing yang lebih baru memiliki ini, seperti https://www.netlify.com/features/ , yang pasti membuatnya lebih menarik untuk aplikasi web yang membutuhkan integrasi SEO / Sosial.

Firebase membunuhnya untuk seluler / react native, dan saya sangat menikmatinya sebagai platform secara keseluruhan, tapi ini adalah kelemahan yang cukup besar untuk aplikasi web IMO.

Secara umum, kami telah menemukan bahwa konten yang memerlukan prapenguraian juga merupakan konten yang paling baik disajikan dengan perenderan sisi server (untuk alasan kinerja dan pemuatan pertama). Prapenguraian generik tidak ada di peta jalan langsung kami karena alasan ini.

Karena itu, kami mendengarkan umpan balik tentang menginginkan integrasi fungsi menjadi lebih fleksibel untuk memungkinkan eksekusi fungsi "terkadang". Karena Firebase Hosting sangat bergantung pada caching CDN, fleksibilitas semacam ini sulit dicapai secara teknis bagi kami. Kami akan terus mendengarkan masukan dan mencoba menemukan cara untuk membuat platform lebih baik untuk kasus penggunaan Anda. :tersenyum:

UI di Firebase untuk menghubungkan fungsi secara langsung ke depan domain
nama akan memperbaiki kasus penggunaan saya.

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

Pada hari Jumat, 5 Jan 2018 jam 15.33, Michael Bleigh [email protected]
menulis:

Secara umum, kami menemukan bahwa konten yang membutuhkan prapenguraian juga
konten yang paling baik disajikan dengan perenderan sisi server (untuk kinerja dan
alasan pemuatan pertama). Prapenguraian generik tidak ada dalam peta jalan langsung kami
untuk alasan ini.

Karena itu, kami mendengarkan umpan balik tentang menginginkan
integrasi fungsi agar lebih fleksibel untuk memungkinkan fungsi "terkadang"
eksekusi. Karena Firebase Hosting sangat bergantung pada caching CDN, jenis ini
fleksibilitas sulit dicapai secara teknis bagi kami. Kita akan lanjutkan
untuk mendengarkan masukan dan mencoba menemukan cara untuk membuat platform menjadi lebih baik
kasus penggunaan Anda. 😄

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-355683821 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AX5XbtVDQSPOIAZFyozujQQUektf2WM1ks5tHqM8gaJpZM4CtPYG
.

-
"Saya belajar teknik"

PEMBERITAHUAN KERAHASIAAN: Isi pesan email ini dan apa pun
lampiran dimaksudkan hanya untuk penerima dan mungkin berisi
informasi rahasia dan / atau hak istimewa dan mungkin dilindungi secara hukum
dari pengungkapan. Kemudian dibagikan dengan perusahaan teknologi, bot, peretas,
lembaga pemerintah, dan pemasar. Keamanan pesan ini tidak ada,
dan dapat dibagikan di Instagram kapan saja. Jika Anda setuju dengan ini,
tolong direspon. Sebenarnya tidak ada keamanan atau privasi di mana pun. Jika
Anda tidak setuju Anda mungkin ingin pergi berkemah dan berbicara dengan orang secara langsung
seperti dulu.

@mbleigh bukankah sudut pandang ini agak bertentangan dengan etos tanpa server, dan menggunakan penyedia BaaS / FaaS seperti firebase? Dengan tren menuju SPA selama beberapa tahun terakhir, ini adalah kasus penggunaan yang cukup umum, sedemikian rupa sehingga ditangani oleh pesaing seperti netlify dan roast misalnya. Meskipun lebih kecil, untuk hosting ini masuk akal, memberikan waktu muat lebih cepat, bersama dengan kemampuan untuk ditemukan dan dibagikan yang kritis.

Daripada menambahkan biaya pengembangan dan pemeliharaan tambahan untuk pelanggan, layanan prapenguraian opsional atau paling tidak, kemampuan untuk berintegrasi dengan layanan pihak ketiga seperti prerender.io akan menjadi peningkatan yang sangat besar.

Firebase benar-benar platform yang hebat tetapi tampaknya lebih berorientasi pada seluler, dengan hosting menjadi satu-satunya bagian yang kurang menarik bagi saya.

Terima kasih atas tanggapan yang cepat.

@tokopedia

Secara umum, kami telah menemukan bahwa konten yang memerlukan prapenguraian juga merupakan konten yang paling baik disajikan dengan perenderan sisi server (untuk alasan kinerja dan pemuatan pertama).

Selain argumen langsung @Pushplaybang , saya harus tidak setuju dengan argumen Anda. Untuk satu hal, terserah pengembang aplikasi (yaitu bukan kepada kalian) untuk mengambil keputusan di bidang ini. Pertimbangan kinerja halaman belaka harus diimbangi dengan keputusan arsitektur lain yang sama pentingnya.

Aplikasi satu halaman atau bagian dari aplikasi harus menggunakan rendering sisi klien pada tingkat tertentu dan sayangnya crawler, termasuk milik Google, belum begitu baik dalam mengindeks halaman tersebut. Saya harus menggunakan PrerenderIO setelah berbulan-bulan gagal mencoba untuk membiarkan google mengindeks situs web saya dengan benar, sesuatu yang memaksa saya untuk tetap menggunakan pendekatan berbasis server express.js, __hanya untuk masalah pengindeksan__.

Bayangkan sebuah situs web yang memiliki halaman /product/**.html yang merender produk APA PUN tergantung pada sisi klien yang terdeteksi dalam url. Alasan di balik desain ini adalah bahwa memuat halaman terpisah yang sebenarnya untuk suatu produk, bahkan dengan tetap menggunakan browser akun dan cache cdn, tidak semulus dari perspektif UX seperti memuat data produk lain dan menampilkannya saat mengubah url. Pelanggan menghabiskan sebagian besar waktu mereka di halaman produk ketika melihat-lihat untuk membeli saat berada di situs web e-niaga dan sering kali menavigasi ke produk lain melalui tautan "produk terkait" atau tautan pencarian ajax dalam halaman.

Kami terjebak dengan mekanisme absurd (IMHO) _escaped_fragment_ agar kami tidak dihukum karena penyelubungan ... apakah Google kesulitan merekrut teknisi dengan solusi yang rapi untuk masalah yang ada di mana-mana ini ??

Saya bahkan menemukan tidak adanya bagian pengindeksan situs web / webapp dalam dokumentasi __unjustifiable__.
Aplikasi seluler mungkin mendominasi pasar konsumen tetapi bagaimana dengan B2B? Sebagian besar departemen kantor beroperasi di komputer desktop. Mengindeks situs web desktop untuk menjangkau R&D atau departemen pembelian bukanlah "menyenangkan untuk dimiliki", ini penting untuk bisnis pemasok B2B.

Jika Firebase / Google tidak tertarik dengan hal ini karena aplikasi mencolok yang dijalankan pada gadget mengkilap menghasilkan lebih banyak pendapatan, alangkah baiknya untuk mengetahuinya; 4 tahun memberikan jawaban mengelak untuk pengadopsi teknologi setia cukup menghina kecerdasan siapa pun.

Ranty? Ya, tetapi saya yang harus membenarkan biaya infrastruktur tambahan waktu pengembangan tambahan dan perilaku crawler yang tidak terduga kepada pelanggan saya.

empat tahun terbukanya masalah ini tampaknya agak konyol. @cleverplatypus - sangat setuju dengan sentimen Anda.

Area masalah ini secara keseluruhan bukanlah sesuatu yang telah kami berhenti pikirkan, tetapi kami masih belum memiliki rencana segera untuk prapenguraian fragmen yang lolos.

Saya menyadari bahwa ada kalanya Aplikasi Laman-Tunggal statis dapat memanfaatkan prapenguraian; namun, saya masih percaya bahwa di sebagian besar (tetapi tidak semua) kasus jenis situs ini lebih baik lagi dilayani oleh rendering sisi server yang dapat melakukan bootstrap SPA dari URL mana pun.

Sasaran kami adalah menjadikan Firebase Hosting sebagai platform yang fantastis untuk menghadirkan semua jenis pengalaman web. Meskipun saya menghargai umpan balik yang terus terang dan penuh semangat yang diberikan di utas ini, kami memiliki sumber daya yang terbatas dan harus memprioritaskan pekerjaan yang menurut kami akan berdampak terbesar bagi basis pelanggan kami secara keseluruhan. Jika Anda ingin membantu mengubah pikiran kami tentang memprioritaskan fitur yang sangat Anda sukai, cara terbaik adalah dengan mengajukan permintaan fitur - ini dihitung dan membantu memandu kami menuju pekerjaan yang diminta oleh komunitas pengembang kami.

Saya akan menutup utas ini karena menurut saya tidak ada tempat tersisa untuk percakapan, tetapi saya akan mendorong siapa pun yang tidak terlayani dengan baik oleh integrasi Cloud Functions kami untuk mengajukan permintaan fitur untuk prapenguraian sehingga kita bisa langsung melihat seberapa besar permintaannya!

Terima kasih telah menggunakan Firebase Hosting, semuanya 😸

Apakah halaman ini membantu?
0 / 5 - 0 peringkat