6

質問

jQueryのCDNから提供されるコンテンツに、遠い将来の期限切れヘッダーがないのはなぜですか?(または、「ここで何が間違っているのですか?」)

バックグラウンド

WebプロジェクトでjQueryとjQueryMobileを使用しています。これらのスクリプトを提供するために、指示に従ってjQueryのCDNを使用します。ただし、これらのリソースは、ブラウザがインテリジェントにキャッシュできないようにする、遠い将来の期限切れヘッダーなしで提供されることに気付きました。

jQueryサーバーはで応答しますが、これ304 Not Modifiedは期限切れヘッダーと同じではなく、その要求を完全に否定します。ここでの簡単な答えは「そうではないから」だと思いますが、なぜそうしないのか疑問に思います。このコンテンツを、理想的にはCDNから、遠い将来の期限切れヘッダーで提供できる方法があれば。

御時間ありがとうございます。

jQuery CDN

http://code.jquery.com/jquery-1.6.4.min.js

応答:

HTTP/1.1 304 Not Modified
Date: Wed, 16 May 2012 00:05:27 GMT
ETag: "9e68e84-16615-6ad9bfc0+gzip"
Last-Modified: Mon, 12 Sep 2011 22:55:03 GMT
Server: ECS (dca/532A)
Vary: Accept-Encoding
X-Cache: HIT

Google CDN

https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js

応答:

HTTP/1.1 200 OK
age:134505
cache-control:public, max-age=31536000
content-encoding:gzip
content-length:32103
content-type:text/javascript; charset=UTF-8
date:Mon, 14 May 2012 10:45:15 GMT
expires:Tue, 14 May 2013 10:45:15 GMT
last-modified:Mon, 02 Apr 2012 18:24:28 GMT
server:sffe
status:200 OK
vary:Accept-Encoding
version:HTTP/1.1
x-content-type-options:nosniff
x-xss-protection:1; mode=block

の遠い将来の有効期限に注意してくださいexpires:Tue, 14 May 2013 10:45:15 GMT

解決

1年の有効期限が特徴のMicrosoftのCDNホストバージョンを使用しています。

http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.1.0/jquery.mobile-1.1.0.min.js

CDNでホストされているファイルの完全なリスト

@zuulは、一部のCDNホストアイテムの有効期限ヘッダーが他のアイテムよりも長い理由を以下に説明しました。ありがとう!

4

2 に答える 2

12

キャッシュの問題全体は、使用しているリンクによって異なります。私は、jQuery の正確なバージョン番号にリンクしていない人が非常に多いことに気付きました。

たとえば、code.jquery.com からこのファイルを参照できます...

http://code.jquery.com/jquery-latest.min.js

...そして、常に jQuery の最新のコピーを入手できます。

または、Googleから同様のことを行うことができます...

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js

「1」で始まると仮定すると、Google からのものは最新バージョンを取得します。問題は、これらの参照を使用すると、キャッシュ制御ヘッダーに設定された遠い将来の有効期限が取得されないことです。そのため、ユーザーのブラウザは頻繁に更新をチェックし、サイトの読み込み時間が遅くなります。

実際、いくつかのオプションとその有効期限設定の内訳は次のとおりです...

http://code.jquery.com/jquery-latest.min.js (キャッシュなし)

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js (1 時間)

http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js (1 時間)

http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js (1 年)

必要な jQuery の正確なバージョンを明示的に指定すると、Google から 1 年の max-age ヘッダーが返されます。したがって、クライアントが単にキャッシュされたコピーを使用する可能性が大幅に増加しています。また、jQuery の新しいバージョンに、本当に必要なバグ修正や機能が追加された場合は、リンクを更新してください。


この説明は、BucketSoft ブログからのものです。

于 2012-05-16T00:31:11.057 に答える
4

Microsoftには、jquerymobileのものをホストしているCDNもあります。

http://www.asp.net/ajaxLibrary/CDNjQueryMobile110.ashx

有効期限-日付は約1年後です!

于 2012-07-03T15:21:19.670 に答える