私は P'unk Avenue で Apostrophe の主任開発者です。
最近追加された縮小化に関する資料で展開 HOWTO を見つけたようですね。その部分を自分で整理しました。それは良い。
サーバー上の有効期限ヘッダーと gzip については、ノードで直接行うことができますが、私たちはそうしません! 一般に、ノードがエンド ユーザーと直接対話することはありません。代わりに、nginx をリバース プロキシとして使用します。これにより、負荷分散が可能になり、静的ファイルを直接配信できるようになります。C/C++ で書かれている nginx の方が高速です。また、gzip と TLS の実装は、十分にテスト済みです。JavaScript が得意ではないことを行う必要はありません。
通常、構成ファイルを手動で作成するのではなく、いくつかのコマンドで nginx を管理するために作成したメカニックを使用して nginx を構成します。そのための標準的なレシピには、gzip ヘッダーと expires ヘッダーの両方が含まれます。
ただし、これが作成する nginx 構成ファイルの注釈付きバージョンを次に示します。負荷分散、gzip、および静的ファイルの長い有効期限がカバーされていることがわかります。
# load balance across 4 instances of apostrophe listening on different ports
upstream upstream-example {
server localhost:3000;
server localhost:3001;
server localhost:3002;
server localhost:3003;
}
server {
# gzip transfer encoding
gzip on;
gzip_types text/css text/javascript image/svg+xml
application/vnd.ms-fontobject application/x-font-ttf
application/x-javascript application/javascript;
listen *:80;
server_name www.example.com example.com;
client_max_body_size 32M;
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# reverse proxy: pass requests to nodejs backends
location @proxy-example-80 {
proxy_pass http://upstream-example;
proxy_next_upstream error timeout invalid_header http_500 http_502
http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Deliver static files directly if they exist matching the URL,
# if not proxy to node
location / {
root /opt/stagecoach/apps/example/current/public/;
try_files $uri @proxy-example-80;
# Expires header: 7-day lifetime for static files
expires 7d;
}
}