以下のエディターでは、Ajax リクエストとブラウザーのキャッシュについて簡単に説明します。編集者はこれが非常に優れていると考えているので、ここで ajax ソース コードを共有し、参考として提供します。 ajax に興味がある場合は、エディターをフォローしてご覧ください
最新の Web アプリケーションでは、フロントエンド コードに大量の Ajax リクエストが溢れています。ブラウザーのキャッシュを Ajax リクエストに使用できる場合、それは大幅に増加します。ネットワーク要求を削減し、プログラムの応答速度を向上させます。
1. Ajax リクエスト
jQueryframeworkを使用すると、Ajax リクエストを簡単に作成できます。
$.ajax({ url : 'url', dataType : "xml", cache: true, success : function(xml, status){ } });
、表示 この式では、現在のリクエストにキャッシュがある場合、そのキャッシュが直接使用されることが必要です。 属性 が false に設定されている場合、Jquery のコメントは次のとおりです: false に設定されている場合、キャッシュを false に設定すると、リクエストされたページも追加されます。クエリ文字列パラメーター「_=[TIMESTAMP]」を URL に追加します。
このように、Ajax リクエストはブラウザーのキャッシュを利用できますか?
これからも見てください。
2. HTTP プロトコル HTTP プロトコルのヘッダー部分は、クライアントがキャッシュを行うべきかどうか、およびキャッシュを行う方法を定義します。詳細については、「14.9 キャッシュ制御」および「14.21 Http ヘッダー フィールド定義の有効期限」を参照してください。簡単な説明は次のとおりです:
Cache-ControlCache-control は、HTTP キャッシュを制御するために使用されます (HTTP/1.0 では部分的に実装されていない可能性があります。Pragma: no-cache のみが実装されています)。データパケット:
キャッシュ制御: キャッシュディレクティブキャッシュディレクティブは次のようになります:
| "no-cache"
| "max -age " "=" デルタ秒| "max-stale" [ "=" デルタ秒 ]
| "min-fresh" "=" デルタ秒| "no-transform"| "only-if -cached "| "キャッシュ拡張子"
re
レスポンスが使用されます:
| "public"
| "private" [ "=" <"> フィールド名 <"> ]
| " キャッシュなし" [ "=" <"> フィールド名 <"> ]
| "ストアなし"
| "max-age" "=" delta-seconds| "s-maxage" "=" delta-seconds| "cache-extension"
説明:
- Public は、応答が可能であることを示します。任意のキャッシュキャッシュにキャッシュされます。
- プライベートは、単一ユーザーの応答メッセージ全体または一部を共有
キャッシュ
できないことを示します。これにより、サーバーは、他のユーザーのリクエストには無効なユーザーからの部分的な応答のみを記述することができます。
-no-store は、重要な情報が意図せずに公開されるのを防ぐために使用されます。リクエスト メッセージで送信すると、リクエスト メッセージと応答メッセージの両方でキャッシュが使用されます。
-max-age クライアントが指定された時間 (秒) を超えない存続期間を持つ応答を受信できることを示します。 -min-fresh は、クライアントが現在時刻に指定された時間を加えた時間よりも短い応答時間で応答を受信できることを示します。 ExpiresExpires はキャッシュの有効時間を表し、クライアントがこの時間より前にリクエストを送信できないようにします。これは max-age の効果と同等です。ただし、同時に存在する場合は、Cache-Control の max-age によって上書きされます。
形式: Expires = "Expires" ":" HTTP-date例: Expires: Thu, 01 Dec 1994 16:00:00 GMT
Last-Modified
3. 私の問題
Ajax にキャッシュを true として明示的に追加した後、問題が残ることがわかりました。そのため、サーバー側の問題ではないかと考えました。サーバーは、Restful ベースのサービスを構築するためにジャージを使用していました。コード スニペットは次のとおりです。 添加Cache控制后,进行测试,一切OK。 最后的代码如下:@GET
@Produces("application/xml")
public Response getProducts() {
Response.ResponseBuilder response = Response.ok(data);
return response.build();
}
@GET
@Produces("application/xml")
public Response getProducts() {
Response.ResponseBuilder response = Response.ok(data);
// Expires 3 seconds from now..this would be ideally based
// of some pre-determined non-functional requirement.
Date expirationDate = new Date(System.currentTimeMillis() + 3000);
response.expires(expirationDate);
return response.build();
}
以上只是示例代码,还可以进行更精细的控制,例如使用CacheControl、Last-Modified等等。
相关推荐:
以上がAjax リクエストとブラウザーのキャッシュに関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。