assetsフォルダ内の大きなJavascriptファイル

/assets/application-7c87db9088046beb643be94b61428105469e084e8d02f141c57adfaf14168c63.js のファイルの一つのサイズが約 3.1 MB あり、Nginx リバースプロキシの error.log に多数の警告を引き起こしています。

an upstream response is buffered to a temporary file /var/lib/nginx/proxy/2/77/0012036772 while reading upstream, client: XXXXXX

  • この非常に大きな JavaScript ファイルが何に使われているかご存知の方はいらっしゃいますか?
  • このファイルのサイズを削減する方法はありますか?Nginx の警告を減らす一つの方法として、バッファサイズを 3.1 MB に増やすことができますが、デフォルトの Nginx 設定からするとそれは少し大きすぎるのではないでしょうか?

Discourse サイトを初めて読み込むと、完全な JavaScript アプリケーションがブラウザに送信されます(その後キャッシュされるため、以降のページ読み込みは非常に高速になります)。これがその 3MB のファイルです。

なお、公式インストールガイドに従うことで、Brotli圧縮で400KBにまで圧縮されたこのファイルを配信する、事前設定済みのnginxリバースプロキシが利用可能になります。

@Falco さん、ありがとうございます。Web コンテナとデータコンテナを個別に使用し、手動でリバースプロキシを設定しています。discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub のガイドは、スタンドアロンコンテナ向けのように見えます。

事前に設定された nginx リバースプロキシ設定については、discourse/config/nginx.sample.conf at main · discourse/discourse · GitHub の設定を使用することを意味しているのでしょうか。

その設定ファイルは公式インストールガイドで使用するテンプレートですが、インストールスクリプトによってインストール中に大幅に修正されます。

残念ながら、設定ファイルは公式インストールガイドに従って実行する場合にのみ提供しています。ガイドから逸脱する場合は、brotli、HTTP/2、IPv6 など、私たちがサポートしているすべての機能を失わないよう注意する必要があります。

@Falco ディスクースのフォーラムを読むと、Web コンテナと DB コンテナを分離することが好ましい、あるいは推奨される方法であることがわかります。別々のコンテナ向けの公式の Nginx 設定マニュアルや自動セットアップガイドがあれば素晴らしいのですが。

インストールの推奨方法は、公式インストールガイドとして文書化されている方法です。ただし、Web/データコンテナを別途使用しても、Web コンテナ内に事前設定された nginx には影響しません。追加のリバースプロキシを必要とせず、同様に動作します。

複数の Discourse フォーラムをホストする際の最適化を探しています:Nginx プロキシ → 分離された Web コンテナと DB コンテナ。このシナリオでは、公式インストールで実施されるパフォーマンス向上設定を、Nginx プロキシ側で手動で行う必要があると想定しています。