0

そのため、12 時間のシフトを 3 週間続けた後、アポストロフィを使用したナレッジ ベース システムの構築はほぼ完了しました。次に、フロントエンドで高速化するタスクが来ます。私の質問は次のとおりです。

  1. 期限切れヘッダーを追加するにはどうすればよいですか: Express には static と呼ばれるマイルドウェアが組み込まれています。index.js ファイルの下に通常どおり実装できますか?
  2. JavaScript と CSS の最小化: http://apostrophecms.org/docs/modules/apostrophe-assets/アポストロフィに何かが組み込まれているのを見ましたが、それを有効にする方法が明確ではありませんか? また、アセットを機能させるには、特定のフォルダにアセットを配置する必要がありますか? 現在、lib/modules/apostrophe-pages/public/js の下にすべての JS ファイルがあり、public/css の下に CSS があります。
  3. サーバーで GZIP を有効にします。何も言及されていませんが、express には gzip モジュールがあり、lib/modules/apostrophe-express/index.js の下に実装できますか?

どんな助けでも大歓迎です。

4

1 に答える 1

2

私は 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;
  }
}
于 2016-11-05T14:52:42.083 に答える