1

what.css?1234567890 のように、Rails の自動バージョン管理されたリソースの有効期限ヘッダーを設定しようとしています。(バージョン管理されていないリソースに有効期限ヘッダーを設定したくありません。) オンラインで見つけることができる唯一の方法は、2 つの手順を含むものでした。ここで、add_expires_header は /public を指すシンボリック リンクです。2) add_expires_header からすべてのファイルに有効期限を追加します。

良いアイデアのように思えますが、以下の curl の結果が示すように、パッセンジャーは書き換え規則を認識していないようです。

(注: 多くの人は、FilesMatch を使用して私の目標を達成できると考えているようですが、FilesMatch ではクエリ文字列が表示されないことを他の場所で読みました。)

タグ内の #from sites_enabled/sitename
...
RewriteCond %{QUERY_STRING} ^[0-9]{10}$
RewriteRule ^(.*)$ /add_expires_header%{REQUEST_URI} [QSA]

  有効期限有効
  ExpiresDefault「アクセスプラス1年」

...

-----
#curl は、書き換えルールが有効になっていないことを示します

manu@Blade-Server:~$ curl -I -L "http://x.com/stylesheets/style.css?1249092148"
HTTP/1.1 200 OK
日付: 2009 年 8 月 11 日 (火) 04:07:49 GMT
サーバー: Apache/2.2.11 (Ubuntu) Phusion_Passenger/2.2.4 PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
最終更新日: 2009 年 8 月 1 日 02:02:28 GMT
ETag: "455b-2fbb-4700aedc5f500"
Accept-Ranges: バイト
コンテンツの長さ: 12219
Vary: Accept-Encoding
コンテンツタイプ: text/css

manu@Blade-Server:~$ curl -I -L "http://x.com/add_expires_header/stylesheets/style.css?1249092148"
HTTP/1.1 200 OK
日付: 2009 年 8 月 11 日 (火) 04:07:55 GMT
サーバー: Apache/2.2.11 (Ubuntu) Phusion_Passenger/2.2.4 PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
最終更新日: 2009 年 8 月 1 日 02:02:28 GMT
ETag: "455b-2fbb-4700aedc5f500"
Accept-Ranges: バイト
コンテンツの長さ: 12219
キャッシュ制御: max-age=31536000
有効期限: 2010 年 8 月 11 日水曜日 04:07:55 GMT
Vary: Accept-Encoding
コンテンツタイプ: text/css

また、apache2.conf、httpd.conf、および public/.htacess に書き換えを含めてみました。

4

1 に答える 1

1

書き換えの問題全体を回避するために、別のサブドメインでアセット ホストを使用することと組み合わせて、これを行うことを好みます。そうすれば、そのサブドメインのすべてに有効期限ヘッダーを設定できます。これは、environments/production.rb のレールで有効化できます。

別のサブドメインを使用したくない場合は、以下のコードで行う必要があると思いますが、自分でテストしていません。

ExpiresActive On
  <FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
    ExpiresDefault "access plus 1 year"
  </FilesMatch>
于 2009-08-23T09:16:25.600 に答える