前置き
以下内容にも間違った情報があるかもなのできちんと調べよう
状況
- cloud run でWEBサービスを提供
- ページ上に画像を表示したい
- 画像は特定のコンテンツ配信サーバーから取得
- ただし元URLはフロントに持たせたくない
誤った対応
- 一度ウェブサーバーで元URLにアクセス
- 画像の存在チェックを行なった後、変換したURLとオリジナルURLの辞書をキャッシュ、変換したURLをフロントに返却
- フロントから変換したURLにアクセス、オリジナルURLから画像取得、画像を返却
何が起きるか
- 画像のサイズがでかかったため、大量のネットワークトラフィック、そこで料金発生(しかもcloud runなのにCompute Engine側の料金としてカウントされる模様、謎)
学び
- 素直にCloud Storage使いましょう
- Cloud Storageに保存してそこから参照させましょう
- CDNも使いましょう
要望に対して変な横着をした結果がこれ
・テンプレート側で画像が404の時に要素を表示したくない
→じゃあリアクティブにDOM生成するvueとか使えばいいじゃーん
→SEO対策とか構造化データの問題で、サーバーサイドでレンダリングする必要ありまーす
→nuxtとかでビルド済みのテンプレート返せばよくない?
→プロジェクトはそもそもそういう仕組みじゃないしそこからやるにはあまりにも大掛かりな変更すぎて時間的猶予がないから無理
→JSとかで自分でかけばよくない?
→それが正解だった、
そもそもvueとかフロントサイドで描画するやつってSEO的に云々って本当なんですかね、、普通にクローラー的に認識できてそうな気がするんですけど。
別にサーバーサイドでレンダリングしないとクローラーが認識できないとか嘘じゃないの誰か教えて