PowerCMS XとS3とCloudFrontで静的サイトを構築してみた

公開

一昨年の今頃は「PowerCMS X R&D Website」と題してPowerCMS XとNext.jsでJamstack構成のサイトを構築したのですが、今年は「PowerCMS X Q&A」というサイトを構築してみました。

単純にサイトを作るのが面白い、という趣味的なところもあるのですが、以下のようなことも考えました。

  • PowerCMS X開発者でも構築者でもなく「ユーザー」になろう
  • PowerCMS Xのいろいろなプラグインを利用してみよう
  • 実装者視点でQ&Aをまとめてみたい
  • 初心者向けの情報を提供したい

最初は単純にAmazon LightsailにNginxとphp-fpmをインストールして公開していたのですが、Amazon S3・CloudFrontの知見を深めたいと考え、S3・CloudFrontを利用して公開するようにしました。Nginxで静的ファイルを配信するだけでも十分速いですが、CloudFrontのエッジサーバーでコンテンツのキャッシュが行われるとさらに速くなりますね。S3へのオブジェクト配置はPowerCMS XのAWS_S3プラグインを利用しているので、普段の更新作業はS3導入前と全く変化がありません。

ユーザー視点でPowerCMS Xを利用していると「記事のタイトルに@を含む時、PostOnTweetでポストすると意図せずメンションを送ってしまうのか」とか、『もしかするとURLマップ毎にメタデータ「Cache-Control」できると良いのでは?』等、いろいろと気付きがあります。前者はテンプレートの調整で対応できますが、後者はもう少し知見を深めて製品にフィードバックできればと考えています。

※Cache-Controlの件は「Amazon CloudFront (Cache Control編) AWS Black Belt Online Seminar」に「キャッシュの有効期限を⻑くすることで、オリジンサーバーへのリクエストを減らせるが、コンテンツの更新が頻繁に発⽣する場合には、有効期限を短くする必要がある」等の記述があったため考え中です。

その他には、自分でプラグインを作成してMroongaで全文検索・類似文書検索(関連するQ&Aの表示)を行う冒険をしていたり、AccessAnalyticsでランキングを表示する準備をしていたり、があります。いろいろ経験を重ねて普段の業務に生かすことができればと考えています。

なお、CSSまでなかなか手が回らないのでQ&A本文がとりあえず見やすければ良いか、という状態ですのでご了承ください。