Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FirebaseでSPAするときのSEO/OGP対応もうこれでいいんじゃないですか2018暫定版
Search
o_tomomichi
April 02, 2018
Programming
1
7.3k
FirebaseでSPAするときのSEO/OGP対応もうこれでいいんじゃないですか2018暫定版
o_tomomichi
April 02, 2018
Tweet
Share
More Decks by o_tomomichi
See All by o_tomomichi
個人開発からのんびり育てる意識低いWebサービス開発の話 / Easy going web development
tomomichi
0
1.8k
個人開発を支える何も作らない技術 / No Devs No Bugs
tomomichi
3
1k
Herokuの無料プランで月間100万PVをさばく(さばかない)話
tomomichi
3
8.7k
Other Decks in Programming
See All in Programming
Ruby Function Composition
bkuhlmann
1
330
Hanami and htmx
bkuhlmann
0
200
Ruby GitHub Packages
bkuhlmann
0
630
エンターテイメント業界で利用されるAWS
demuyan
0
210
Azure OpenAI Serviceのプロンプトエンジニアリング入門
tomokusaba
3
620
Zero Waste, Radical Magic, and Italian Graft – Quarkus Efficiency Secrets
hollycummins
0
230
CQRS/ES avec Symfony, c’est (trop) bien !
jeremyfreeagent
1
640
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
640
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.3k
Java 22 Overview
kishida
1
180
Ruby Pattern Matching
bkuhlmann
0
920
ONE WEDGE_company_guide
1wedge_one
0
440
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
7
2.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
647
58k
Writing Fast Ruby
sferik
620
60k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
658
120k
Build your cross-platform service in a week with App Engine
jlugia
225
17k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
A designer walks into a library…
pauljervisheath
199
23k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
For a Future-Friendly Web
brad_frost
171
8.9k
Docker and Python
trallard
33
2.7k
Transcript
FirebaseでSPAするときの SEO/OGP対応 もうこれで いいんじゃないですか 2018暫定版
自己紹介 • なんちゃってWebエンジニア • ぼっちWebサービス開発 • NOT SO BAD, LLC.
おおにし @kame_f_no7
簡単・便利なトーナメント表作成サービス
課題感
THE TOURNAMENTの話
うれしみ つらみ 無料枠が大きい 認証が簡単すぎ Functionsが便利すぎ まだ障害も多い 管理画面が弱い バックアップできない 初回表示が重い SEOが弱くなった
SPAのSEO/OGPあるある • Googleにインデックスされない • SNSシェアにOGPが反映されない botの進化で解決したのでは…?
None
ダメでした\(^o^)/ ※使用するフレームワークなどにもよるようです。
対応策
こういうのがありますよね • SSR • プリレンダリング • metaタグだけ入ったhtmlを返す ◦ botにだけ別ページ表示 ◦
URLを分けてリダイレクト
今回の方針としては • シンプルで対応工数少ないの希望 • SEOペナルティは避けたい • パフォーマンス改善は目をつぶる
やったこと 1. Functionsでindexのmetaタグ差替 2. FunctionsでRSSフィード配信 3. スプレッドシートでsitemap公開
① Functionsで index.htmlの metaタグ差し替え
firebase.json
None
事例見かけないので不安。 なにか罠あります?
心配になるところ • Functions使いすぎるのでは? • パフォーマンス落ちるのでは?
心配ポイント①:Functions使いすぎ問題 でもFunctionsのレスポンスは CDNにキャッシュできる
None
• コンテンツ部分は結局クライアント側で レンダリングしてる(のでキャッシュされ ない) • キャッシュしてるのはガワだけなので、 保存期間長くしてもよさそう 心配ポイント①:Functions使いすぎ問題
心配ポイント②:パフォーマンス問題 中央値:200~300ms
まぁいいか \(^o^)/
② Functionsで 超お手軽にRSSフィード配信
/feed でxml形式のRSSフィードを出力する
Firestoreから最新のコンテンツn件をxmlで返す
キャッシュは長めがハッピー
None
めっちゃ簡単 \(^o^)/
③ スプレッドシートで 超お手軽にsitemap配信
クロールしてもらうために sitemapも用意しないと。。 でも面倒くさい
• XMLじゃなくて改行テキストでOK →実はCSV形式でもOK • 外部ドメインに置いてもOK • スプレッドシートはCSV形式で公開でき る あまり知られてないsitemapの話
つまり?
いつからこれがsitemapではないと錯覚していた…?
None
robots.txt
更新はどうするの?
None
RSSが更新されたら自動でシートに追記
実際クロールされるの?
来すぎてquota超えた(先にblazeにしましょう)
まとめ
改めて、やったこと再掲 1. Functionsでindexのmetaタグ差替 2. FunctionsでRSSフィード配信 3. スプレッドシートでsitemap公開
Functions最高 \(^o^)/
CM
FirestoreのGUI管理アプリ作りかけです https://notsobad-jp.github.io/sequelFIRE/
Thank you.