ファイルを差し替え・削除しても CDN URL が自動パージされなくなった
原題: Replacing or deleting a Shopify-hosted file no longer purges its CDN URL
- Files
- CDN
- Theme
- Liquid
- Storefront API
- Admin API
- GraphQL
- 仕様変更
図解 : Shopify ホスト型ファイルの差し替え・削除で CDN URL が自動パージされなくなる Action Required Platform ファイルを差し替え・削除しても CDN URL が自動パージされなくなった 2026年4月7日以降、Shopify 管理画面でファイルを差し替え/削除しても、 cdn.shopify.com/... のキャッシュは即座に消えない。古い内容が TTL 切れまで配信され続ける。対策は「バージョン付き URL(?v=...)を動的に出力する」こと。 このページの構成 何が変わったのか(30秒で理解) 仕組み図解 : 差し替え時の挙動(Before / After) なぜこの変更が行われたのか 安全なパターン vs 壊れるパターン 対策 : 3つの実装パターン 技術者が押さえるべき5つのポイント 業務に活かせる3つのユースケース 提案で使える1行サマリ 1 何が変わったのか 今までは、管理画面でファイルを差し替え/削除すると Shopify が CDN 上の URL を能動的にパージ していた。 2026年4月7日以降、その自動パージが 行われなくなった 。同じ URL のキャッシュは、 TTL(Time To Live)が切れるまで旧コンテンツを配信し続ける 。 従来 : 差し替え=即パージ ファイルを置き換えると Shopify が cdn.shopify.com/... のキャッシュを自動で消し、すぐに新しい内容が配信された。 2026/4/7〜 : パージしない 差し替え・削除しても同じ URL はパージされない。旧コンテンツが TTL 切れまで残るため、見た目が更新されない期間が生じる。 Action Required(要対応) : cdn.shopify.com/... の URL を ベタ書き(ハードコード) している箇所は、ファイルを差し替えても古い内容を返し続ける。動的パターンへの移行が推奨されている。 2 仕組み図解 : 差し替え時の挙動(Before / After) ポイント : 解決の鍵は「URL を変えること」。Shopify の URL ヘルパーはファイルが更新されると ?v=... のバージョンパラメータを最新値で付け直す。URL が変われば CDN は別物として扱い、新コンテンツが即配信される。 3 なぜこの変更が行われたのか CDN パージ量の削減 記事に明記 : 差し替えのたびに発生していたパージ処理の総量を減らすことが狙い。 エッジプロバイダー間の一貫性向上 記事に明記 : 複数のエッジ(CDN)プロバイダーをまたいだ配信の整合性を高めることが狙い。 TTL の具体的な秒数や、対象ファイル種別の細目は記事に 記載なし 。挙動を正確に把握したい場合は実際の配信レスポンス(キャッシュヘッダー)を確認すること。 4 安全なパターン vs 壊れるパターン 記述方法 差し替え後の挙動 判定 テーマで file_url / image_url / asset_url Liquid フィルタで参照 最新の ?v=... 付き URL が出力され、新コンテンツが配信される 安全 商品にネイティブ Media アップローダで挿入 画像・動画を直接アップロード Shopify がバージョン付き参照を管理 → 更新が反映される 安全 アプリ/外部連携でリクエスト時に URL を取得 Admin GraphQL / Storefront API から都度取得 常に最新 URL を取得 → 更新が反映される 安全 商品説明・ブログ記事に <img src="cdn.shopify.com/..."> をベタ貼り 差し替えても 元の内容を返し続ける 壊れる テーマコードに cdn.shopify.com/... をハードコード 差し替えても 元の内容を返し続ける 壊れる 印刷物などに固定 URL を記載 アプリ等が URL をキャッシュ保持している場合も同様 差し替えても 元の内容を返し続ける 壊れる 5 対策 : 3つの実装パターン 1 テーマ Liquid フィルタ file_url / image_url / asset_url を使ってファイル参照をレンダリングする。 2 商品 説明文に <img> を貼らず、ネイティブの Media アップローダで画像・動画を挿入する。 3 アプリ/外部連携 URL をキャッシュせず、 リクエスト時 に Admin GraphQL API / Storefront API から取得する。 いずれの方法も共通して、 現在のバージョン付き URL( ?v=... )を常に出力する のが目的。これにより、ファイルを差し替えるたびに URL が更新され、顧客に最新コンテンツが届く。 6 技術者が押さえるべき5つのポイント 1. 解決の本質は「URL を変える」こと パージではなく、バージョンパラメータ ?v=... でキャッシュキー自体を変える設計に寄せる。URL が変われば CDN は新規扱いになる。 2. ハードコード cdn.shopify.com が地雷 商品説明・ブログ・テーマコード・印刷物に固定 URL を埋め込んでいる箇所は、差し替えても更新されない。棚卸しの対象。 3. アプリは URL をキャッシュしない 外部連携でファイル URL を DB やキャッシュに保存している実装は要見直し。リクエスト時に Admin / Storefront API から取得する。 4. 更新は「即時」ではなく TTL 依存 動的パターンに移行していない既存 URL は、TTL が切れるまで旧内容のまま。具体的な TTL 値は 記載なし 。 5. テーマは URL ヘルパーへ全面移行する テーマ内の静的アセットやファイル参照は file_url / image_url / asset_url 経由に統一する。新規開発はもちろん、既存テーマのコードレビューでもハードコード URL を検知する仕組み(grep / リンタ)を入れておくと事故を防げる。 7 業務に活かせる3つのユースケース USE CASE 1 「差し替えたのに反映されない」問い合わせの未然防止 課題 キャンペーンバナーや商品画像を同じファイル名で差し替える運用をしていると、4/7 以降は古い画像が表示され続け「更新が反映されない」という問い合わせが発生する。 打ち手 テーマ・商品の画像参照を URL ヘルパー/ネイティブ Media に統一し、ハードコード cdn.shopify.com を全面排除する。 効果 差し替え即反映が担保され、サポート工数と「公開事故」リスクを削減。 技術メモ 既存テーマ・商品説明を cdn.shopify.com で grep して棚卸し。TTL の明示値は記載なしのため、反映タイミングは挙動確認が必要。 USE CASE 2 外部連携・自社アプリの「URL キャッシュ」棚卸し 課題 商品画像 URL を自社 DB やキャッシュ、メール配信・PIM・広告フィード等に保存している連携は、ファイル差し替え後に古い画像を出し続ける。 打ち手 保存済み URL を廃し、配信・表示の リクエスト時 に Admin GraphQL API / Storefront API から URL を取得する設計へ変更。 効果 商品ビジュアルの鮮度を全チャネルで担保。誤った画像配信による機会損失・クレームを防止。 技術メモ 取得頻度が増えるため、API のレート上限とレスポンスのキャッシュ戦略(URL ではなく問い合わせ結果側の短期キャッシュ)を併せて設計する。 USE CASE 3 移行・コードレビューに「ハードコード URL 検知」を組み込む 課題 テーマ開発・サイト移行案件で、過去に貼られた cdn.shopify.com/... 固定 URL がレビューをすり抜け、リリース後に更新不能な画像が残る。 打ち手 CI / コードレビューのチェック項目に「 cdn.shopify.com ハードコード禁止 → URL ヘルパー必須」を追加し、検出を自動化する。 効果 差し替え不能アセットの混入をリリース前に機械的にブロック。納品物の保守性が上がる。 技術メモ テーマは file_url / image_url / asset_url への置換を必須化。商品説明への <img> ベタ貼りも運用ルールで禁止する。 8 提案で使える1行サマリ 「2026/4/7 以降、ファイルを差し替えても CDN は自動パージされず、旧内容が TTL 切れまで残る。 対策はバージョン付き URL( ?v=... )の動的出力に統一すること ― テーマは URL ヘルパー、商品はネイティブ Media、アプリは API からリクエスト時取得。ハードコード cdn.shopify.com は今すぐ棚卸し。」 source : shopify.dev / changelog / replacing-or-deleting-a-shopify-hosted-file-no-longer-purges-its-cdn-url 公開日 : 2026-04-07 / generated 2026-05-25