Apache-2.2

Nginx 的記憶體清除和包含文件

  • November 3, 2013

在 Apache 中,您可以使用以下內容來記憶體 bust css 和 js 文件,並使用 Apache 的 Include mod 將它們作為單個文件提供服務:

<FilesMatch "\.combined\.js$">
 Options +Includes
 AddOutputFilterByType INCLUDES application/javascript application/json
 SetOutputFilter INCLUDES
</FilesMatch>
<FilesMatch "\.combined\.css$">
 Options +Includes
 AddOutputFilterByType INCLUDES text/css
 SetOutputFilter INCLUDES
</FilesMatch>
<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
</IfModule>

我知道使用 nginx 可以做到這一點,但我似乎無法使語法正確。

– 編輯 – 添加一些程式碼

到目前為止,我唯一的一塊是:

location ~* (.+)\.(?:\d+)\.(js|css)$ {
   ssi on;
   try_files $uri $1.$2;
}

我正在尋找的是能夠使用combined帶有數字的關鍵字將所有 js 和 css 文件組合成單個文件以進行記憶體破壞:

style.combined.100.css
javascript.combined.100.js
  • 解決方案 -
location / {

   ssi on;
   ssi_types *;

   location ~* \.combined\.js$ {
       ssi_types application/javascript application/json;
   }

   location ~* \.combined\.css$ {
       ssi_types text/css;
   }

   location ~* ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ {
       try_files $uri $1.$3 =404;
   }
}

不知道有多安全ssi_types *;

我對ssi 模組沒有太多經驗,但是您可以嘗試一下(或多或少直接重寫 Apache 配置)。

location / {

   location ~* \.combined\.js$ {
       ssi on;
       ssi_types application/javascript application/json;
   }

   location ~* \.combined\.css$ {
       ssi on;
       ssi_types text/css;
   }

   location ~* ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ {
       try_files $uri $1.$3 =404;
   }

}

引用自:https://serverfault.com/questions/550351