ShopServe(ショップサーブ)で運用しているECサイトで、かなり不可解な現象に遭遇しました。サイドバー(商品カテゴリやバナー)のHTMLを管理画面で編集して保存し、「サイト再構築」も複数回実行したのに、商品ページでは古い内容のまま表示されるのです。
さらに厄介なことに、同じURLなのにアクセスの仕方によって表示が変わるという挙動まで確認できました。今回はこの現象を切り分けて解決するまでの記録です。同じ症状で困っている方の参考になれば幸いです。
現象の整理
- 管理画面でサイドバーのHTMLを編集・保存した
- 「サイト再構築」を複数回実行した
- それでも商品ページでは古いサイドバーが表示される
- 同じURLでも、表示が新しくなったり古くなったりする
「保存できていないのでは」というレベルの話ではなく、明らかに何かの条件で新旧が切り替わっている状態でした。
切り分けの過程(試して除外したもの)
原因の候補をひとつずつ潰していきました。
| 疑った箇所 | 検証内容と根拠 | 結果 |
|---|---|---|
| ブラウザキャッシュ | cache: 'no-store' を付けた fetch() で直接取得しても再現 | 除外 |
| CDN・中間キャッシュ | レスポンスヘッダーに Cache-Control: private、Age ヘッダー無しで兆候なし | 除外 |
| JavaScript | JSを一切実行しない fetch() のみのテストでも再現 | 除外 |
| PHP(自社管理のファイル) | 該当ファイルがそもそも存在しない | 除外 |
| .htaccess | 内容を全て確認し、最小構成でテストしても再現 | 除外 |
| Smartyのコンパイル済みキャッシュ | templates_c/ をリネームして強制再生成しても変化なし | 除外 |
ひとつ補足すると、最後のSmartyキャッシュの検証では、リネーム操作の直後に一時的な接続エラーが発生し、サイトを落としかけました。本番サーバーのキャッシュ関連フォルダを直接操作する実験は、「安全なはず」と思っても瞬間的な障害リスクがある——これは今回の教訓のひとつです。
ブレイクスルー:アクセス経路で表示が変わる
転機は偶然でした。「カテゴリ一覧ページからリンクをクリックして商品ページへ遷移した場合」と「同じURLに直接アクセスした場合」で、表示が異なることに気づいたのです。
そこで fetch() の Referer ヘッダー(参照元の情報)だけを明示的に変えて検証しました。
Refererがカテゴリ一覧ページ → 新しい内容が返るRefererが無い(直リンク・ブックマーク等) → 古い内容が返る
リダイレクトは発生しておらず、同一URL・同一ステータス200のまま、Referer の値だけでサーバーが返すHTMLが変わっていたのです。これで「キャッシュの問題ではなく、サーバー側の出し分け」と確定しました。
根本原因:「トップページ用」設定が商品ページに流用されていた
FTPで管理画面の裏側にあるSmartyテンプレートのソースを確認したところ、原因が見えてきました。
ShopServeの管理画面には「商品カテゴリ(サイド用)」という設定が2箇所存在します。
- 「商品ページ」用(一覧ページと共通)
- 「トップページ」用
今回のサイトはトップページを独自HTMLで構築していたため、「トップページ用の設定は使っていない」と思い込み、編集していませんでした。
ところが実際には、ShopServe内部で「今どのカテゴリの文脈にいるか判断できない場合(=Referer が無い=直リンクアクセス)」のフォールバック表示として、名前とは裏腹に「トップページ」用テンプレートが商品ページにも流用されていました。
つまりこの2つの設定は「トップページ/商品ページ」というページ種別で分かれているのではなく、実質は「カテゴリの文脈があるか無いか」で分岐していて、片方のラベルがたまたま「トップページ」という紛らわしい名前になっていただけだったのです。
解決策
「トップページ」側の同じ設定にも、「商品ページ」側と全く同じ新しいHTMLを貼り付けたところ、直リンクでも新しいサイドバーが表示されるようになり解決しました。
今回の教訓
- ShopServeでサイドバー等の共通パーツを変更するときは、同じ名前・似た名前の設定が複数箇所に無いか必ず確認し、関連する箇所は全て同時に編集する
- 「〇〇ページ用」というラベルは、内部のフォールバックロジックと一致しているとは限らない
- 「同じURLなのに結果が変わる」不可解な現象では、HTTPリクエストヘッダー(
Referer等)による出し分けを疑うのが有効な切り分け手段 - 本番サーバーのキャッシュ関連フォルダを直接操作する実験は、瞬間的な障害リスクを踏まえて慎重に
カートの内部仕様に振り回されると「もう別のカートに乗り換えたい」と感じがちですが、その判断には切り分けと整理が必要です。考え方は 「ECカートが使いにくい」で乗り換える前に|後悔しないための判断フロー にまとめています。
同じような「更新したのに反映されない」「原因がどこにあるか分からない」というECサイトのトラブルは、状況を伺えばこちらで切り分けできます。お困りの際はお気軽にご相談ください。



