# Discourse のために CDN を有効にする

**URL:** https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857
**Category:** Self-Hosting
**Tags:** cdn, configuring, how-to
**Created:** [2014 年 4 月 18 日午前 7:51 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857 "2014-04-18T07:51:41Z")
**Posts on this page:** 20
**Page:** 3

<div class="post-metadata">

### Author: ![ufukayyildiz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ufukayyildiz/32/217157_2.png) [@ufukayyildiz](https://meta.discourse.org/u/ufukayyildiz)
#### Post date: [2021 年 5 月 8 日午後 12:06 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/81 "2021-05-08T12:06:25Z")

</div>

> [@pfaffman](#):
>
> CDN は、リクエストされかつまだキャッシュされていない場合にのみそれらを要求します。

つまり、ファイルは私のシステムと同期せず、CloudFront は単にそれらをキャッシュするだけでしょうか。私の理解は合っていますか？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2021 年 5 月 8 日午後 12:48 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/82 "2021-05-08T12:48:24Z")

</div>

はい、その通りです。CDN は、リクエストされたアセットのみをあなたのサイトから取得します。

Discourse は、CSS や JavaScript などの静的アセットだけでなく、アップロードファイルも S3 へプッシュします。

---

<div class="post-metadata">

### Author: ![Pravi](https://avatars.discourse-cdn.com/v4/letter/p/76d3ee/32.png) [@Pravi](https://meta.discourse.org/u/Pravi)
#### Post date: [2021 年 6 月 25 日午後 7:27 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/83 "2021-06-25T19:27:41Z")

</div>

Cloudflare ルールを使用して、CSS や JavaScript などの静的アセットをキャッシュすることは可能でしょうか？

---

<div class="post-metadata">

### Author: ![bartv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bartv/32/130052_2.png) [@bartv](https://meta.discourse.org/u/bartv)
#### Post date: [2021 年 6 月 26 日午前 6:23 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/84 "2021-06-26T06:23:15Z")

</div>

はい、私たちはそのように使用しており、問題なく動作しています。ただし、JavaScript の最適化を無効にするよう、十分に注意してください。当社の設定は以下でご確認いただけます：

> [@S3 image bandwidth costs are getting annoying](https://meta.discourse.org/t/s3-image-bandwidth-costs-are-getting-annoying/122052/4?u=bartv):
>
> I’m using Cloudflare on [my Discourse site](https://blenderartists.org) and it works fine. You basically route all your traffic through Cloudflare and tell it what to process or cache and that’s it. There are a few things to keep in mind though: Configure Cloudflare to NOT cache anything (set up exceptions using page rules, see below). Don’t let Cloudflare touch your Javascript - specifically, turn off Rocket Loader. I’m not sure about Brotli compression yet, I disabled it. Set up page rules to cache the avatar and upload …

---

<div class="post-metadata">

### Author: ![Pravi](https://avatars.discourse-cdn.com/v4/letter/p/76d3ee/32.png) [@Pravi](https://meta.discourse.org/u/Pravi)
#### Post date: [2021 年 6 月 26 日午前 7:16 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/85 "2021-06-26T07:16:31Z")

</div>

ご返信ありがとうございます。

[![](https://global.discourse-cdn.com/meta/original/3X/5/b/5b3b5bfcf5d81967e9e648d3fa03995140507244.png) ](https://global.discourse-cdn.com/meta/original/3X/5/b/5b3b5bfcf5d81967e9e648d3fa03995140507244.png)

2 番目と 3 番目のルールはすでに追加しましたが、1 番目のルールがわかりません。301 リダイレクトが必要な理由は何でしょうか？

---

<div class="post-metadata">

### Author: ![bartv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bartv/32/130052_2.png) [@bartv](https://meta.discourse.org/u/bartv)
#### Post date: [2021 年 6 月 26 日午前 7:41 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/86 "2021-06-26T07:41:12Z")

</div>

必要ありません。説明に記載されています。

---

<div class="post-metadata">

### Author: ![Pravi](https://avatars.discourse-cdn.com/v4/letter/p/76d3ee/32.png) [@Pravi](https://meta.discourse.org/u/Pravi)
#### Post date: [2021 年 6 月 26 日午前 10:37 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/87 "2021-06-26T10:37:50Z")

</div>

ご返信ありがとうございます。CSS や JavaScript などの静的アセットについてはどうでしょうか？CSS や JavaScript 向けのルールは設定可能ですか？

---

<div class="post-metadata">

### Author: ![bartv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bartv/32/130052_2.png) [@bartv](https://meta.discourse.org/u/bartv)
#### Post date: [2021 年 6 月 26 日午前 10:51 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/88 "2021-06-26T10:51:01Z")

</div>

それはテストしていません。動作するかどうかはわかりません。少なくとも、ビルドのたびに Cloudflare のキャッシュをクリアする必要があります。

---

<div class="post-metadata">

### Author: ![Pravi](https://avatars.discourse-cdn.com/v4/letter/p/76d3ee/32.png) [@Pravi](https://meta.discourse.org/u/Pravi)
#### Post date: [2021 年 6 月 26 日午後 1:35 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/89 "2021-06-26T13:35:54Z")

</div>

私としては、リビルドのたびにキャッシュをクリアしても問題ありません。`https://myforum.com/assets/` 内のすべてをキャッシュするルールを設定した場合、他にどのような問題が発生する可能性がありますか？これによってユーザーのログインに影響が出ることはありますか？もし許可いただければ、1週間テストして報告いたします。まだ未使用のルールが1つ残っています。

---

<div class="post-metadata">

### Author: ![MarcP](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marcp/32/160184_2.png) [@MarcP](https://meta.discourse.org/u/MarcP)
#### Post date: [2021 年 9 月 16 日午前 2:40 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/92 "2021-09-16T02:40:13Z")

</div>

> [@system](#):
>
> あなたの CDN の「フレンドリー」な名前である **CNAME** （DNS で設定するもの。例：`discourse-cdn.example.com`）

念のため確認ですが、Cloudflare CDN を使用している場合、このフィールド（および CDN URL）は使用しないという理解で正しいでしょうか？

ドキュメントに従って、app.yml に cloudflare.template を設定しました。

Cloudflare を使用する際に、さらに設定は必要でしょうか？

---

<div class="post-metadata">

### Author: ![Victor\_Ashiedu](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/victor_ashiedu/32/264361_2.png) [@Victor\_Ashiedu](https://meta.discourse.org/u/Victor_Ashiedu)
#### Post date: [2022 年 6 月 28 日午前 1:33 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/94 "2022-06-28T01:33:59Z")

</div>

CDNとしてStackPathを正常に使用しました。期待どおりに動作します！

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [2022 年 7 月 26 日午前 9:30 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/95 "2022-07-26T09:30:36Z")

</div>

> [@Discourse](#):
>
> ⚠ CloudFlare CDN と Discourse は歴史的にうまく連携してこなかったため、現時点では CloudFlare CDN の実行はお勧めしません。

これは現在も同様でしょうか？

2019年より：

> [@S3 image bandwidth costs are getting annoying](https://meta.discourse.org/t/s3-image-bandwidth-costs-are-getting-annoying/122052/4?u=canapin):
>
> I’m using Cloudflare on [my Discourse site](https://blenderartists.org) and it works fine. You basically route all your traffic through Cloudflare and tell it what to process or cache and that’s it. There are a few things to keep in mind though: Configure Cloudflare to NOT cache anything (set up exceptions using page rules, see below). Don’t let Cloudflare touch your Javascript - specifically, turn off Rocket Loader. I’m not sure about Brotli compression yet, I disabled it. Set up page rules to cache the avatar and upload …

細心の注意を払う必要があり、Cloudflare のメリットの一部を失うようです。

2020年より：

> [@I can't login to admin after backup due to Cloudflare](https://meta.discourse.org/t/i-cant-login-to-admin-after-backup-due-to-cloudflare/162996/9?u=canapin):
>
> Cloudflare isn’t broken, your implementation was. Let’s Encrypt won’t enroll a certificate while CloudFlare is proxying. It prevents the verification from going through. You can’t use any of their ‘performance’ features with Discourse as it alters the already-minified code. All CloudFlare can do for you is hide your IP and act as a CDN for your uploads. The benefits are minimal.

2021年より：

> [@S3 image bandwidth costs are getting annoying](https://meta.discourse.org/t/s3-image-bandwidth-costs-are-getting-annoying/122052/23?u=canapin):
>
> Cloudflare is fine - just disable their Rocket Loader feature. With no configuration effort, it saves half the bandwidth back to my server. It might be that years ago Cloudflare didn’t work well with Discourse, but it’s not true today. It would be nice if we didn’t keep seeing doubt about it. If anyone has a specific problem, they should start a support thread here describing what’s not working.

では、Cloudflare は今日の Discourse で信頼性が高く効率的でしょうか？「Rocket Loader」機能を無効にすると、メリットは最小限になりますか？

Stackpath から Bunny CDN に移行しようと考えていましたが、私のフォーラムドメインの所有者であり元管理者でもある人物が Cloudflare のエンタープライズアカウント（tinyURL の所有者でもあります）を持っており、そこにドメインを無料で追加できるとのことです（[https://unicyclist.com/t/looking-for-a-decrease-in-the-forum-fees-in-the-future/274858/6）。](https://unicyclist.com/t/looking-for-a-decrease-in-the-forum-fees-in-the-future/274858/6%EF%BC%89%E3%80%82)

そこで、Bunny CDN の代わりに Cloudflare を使用するのは、適切で、手間がかからず、効果的なのか疑問に思っています。

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [2022 年 7 月 26 日午前 11:01 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/96 "2022-07-26T11:01:27Z")

</div>

画像が多い場合、直接接続されたSSDを増設するためにかかる費用は、同等のS3費用よりもはるかに高くなります。

S3は、インバウンドとアウトバウンドの料金が発生するため、費用対効果を高めるにはCDNが必要ですが、それでも高速SSDを増設するよりもはるかに安価です。CloudflareはS3の前に配置できますが、アセットキャッシュが唯一確実に使用できる機能です。Cloudflareをクライアントとアプリケーションサーバーの間に配置すると、ホップ数が増加し、アプリケーションのレイテンシが上昇します。それは魔法の弾丸ではありません。

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [2022 年 7 月 26 日午前 11:45 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/97 "2022-07-26T11:45:51Z")

</div>

画像はそれほど多くありません。CDNの目標は、コミュニティが国際的（主に米国とヨーロッパ）であるため、すべてのユーザーにアセットを高速で読み込めるようにすることです。

S3を使用していますが、バックアップの保存にのみ使用しています。

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [2022 年 8 月 25 日午後 4:38 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/98 "2022-08-25T16:38:42Z")

</div>

簡単な質問です。CDNを変更した後に再ベイクは必須ですか？それともCDNのURLが異なる場合のみですか？それとも全く必要ないのでしょうか？

* * *

編集：または、レールスクリプトを使用して、クックされた投稿の古いURLを新しいURLに置き換えるだけで可能ですか？

例えば、次のような投稿がある場合：

```xml
<img class="ytp-thumbnail-image"
src="https://f5i4i8k5.stackpathcdn.com/uploads/default/original/3X/f/3/f3bc5ab19cc0394f33fd008e90ca06e081886a0b.jpeg"
title="Riding a unicycle part 76: Sullivan Canyon - Los Angeles"
width="480"
height="360"
loading="lazy"
style="aspect-ratio: 480 / 360;"
>

```

`f5i4i8k5.stackpathcdn.com` から `newcdn.unicyclist.com` への文字列の検索と置換を、何も壊さずに実行できますか？安全なように思えますが、確信が持てません。

すべての投稿を再ベイクしても構いませんが、前回直面した問題は、数千個の埋め込みYouTube動画があり、再ベイク中にYouTubeへのリクエストが多すぎたためにIPがYouTubeからブラックリストに登録されたことです。

そのため、同じ厄介な問題に直面してすべての投稿を再ベイクする以外の安全な代替手段があれば、そちらを選択したいです…

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022 年 8 月 26 日午前 7:25 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/99 "2022-08-26T07:25:52Z")

</div>

すべての投稿内の文字列を置換するrakeタスクがあります。それを実行しても安全で良い考えだと思います。[すべての投稿内の文字列を置換する](https://meta.discourse.org/t/replace-a-string-in-all-posts/48729) がお探しのものだと思います。

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [2022 年 8 月 26 日午前 9:52 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/100 "2022-08-26T09:52:33Z")

</div>

ジェイさん、こんにちは。

rakeタスクの使用については、確信が持てません。

CDNのURLは、 **raw** フィールドではなく、 **cooked** フィールドに存在するようです（メールで送信された場合を除く）。

私の理解では、`post:remap` は raw フィールド内の文字列のみを検索します。

> <https://github.com/discourse/discourse/blob/9db8f00b3dd6f2881adf1b786e29426889225e7a/lib/tasks/posts.rake#L173>

**raw** フィールドと **cooked** フィールドの両方でCDNのURLを置き換えることが安全であれば、カスタムRailsスクリプトを使用すべきでしょうか？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022 年 8 月 26 日午後 3:02 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/101 "2022-08-26T15:02:13Z")

</div>

おっしゃる通りです。データベース内のすべてのフィールドの文字列を置き換える別の「もの」があります。それがお探しのものです。申し訳ありませんが、今は見つけられません。あるs3から別のs3への移行に関するトピックはいくつかありますが、#howto のようなものはないようです。

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [2022 年 8 月 26 日午後 3:55 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/102 "2022-08-26T15:55:50Z")

</div>

この手がかりをありがとうございます！

これのことだと思いますか？

```ruby
DbHelper.remap('from', 'to')

```

[Rebaking old posts won't pull new S3 CDN URL after S3 bucket rename - #10 by Brad\_Wood](https://meta.discourse.org/t/rebaking-old-posts-wont-pull-new-s3-cdn-url-after-s3-bucket-rename/175882/10?u=canapin) で見つけました。

そしてここで使用されています：

> <https://github.com/discourse/discourse/blob/1472e47aae5bfdfb6fd9abfe89beb186c751f514/lib/file_store/to_s3_migration.rb#L289>

CDNサービスを変更する際の、リベイクの安全な代替手段であれば、#howto があれば確かに良いでしょう。

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022 年 8 月 26 日午後 4:41 UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857/103 "2022-08-26T16:41:03Z")

</div>

> [@Canapin](#):
>
> この手がかりをありがとう

おめでとうございます。お知らせいただきありがとうございます。それで見つけられると思っていたのですが、見つかってよかったです。

[Previous page](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857.md?page=2)

[Next page](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857.md?page=4)
