A.基本的な考え方
HTTPの特長
- 高速でシンプル:あなたが呼び出すと、単にリクエストメソッドとパスを転送
- 柔軟性:Content-Typeのマーカー、データオブジェクトの任意の型の伝送を可能に
- 接続できない:サーバーの切断要求が処理されます
- ステートレス:後続の情報処理の前に必要であれば、各リクエストは独立した手段であり、それは再送信されなければなりません
永続的な接続キープアライブ
- 接続:**キープアライブ**クライアント・サーバー接続はキープアライブ時間を指定された以上、予期せぬ停電などの場合を除いて、確立または再確立の接続を防ぐ効果にとどまります
- リクエスト1 - >レスポンス1 - > 2リクエスト - >レスポンス2
- HTTP 1.1
パイプライン
- 永続的な接続が完了することにより、
- 要求1 - >要求2 - > 3要求 - >レスポンス1 - >応答2 - > 3レスポンス
- 唯一のGETとHEADは、POSTの制限パイプライン化することができます
- HTTP 1.1
GETとPOSTの違い
- URLの長さに渡されたGETリクエストパラメータが限られているが、それはPOSTを持っています
- 直接URLに露出パラメータは、機密情報を送信するために使用することはできませんので、POSTよりも安全GET
- に配置されたURLを経由して渡されたGETパラメータ、POSTリクエストボディ
- GET代替ブラウザは無害であり、かつPOSTは、要求を再提出するとき
- GETのURLアドレスがによって生成することができ、コレクションではなく、POST
- GETリクエストは、積極的にブラウザになりますキャッシュ、およびPOSTはしません、手動で設定しない限り、
- GETリクエストパラメータは、ブラウザの歴史の中で無傷である、とPOSTパラメータが保持されません
- GETリクエストはURLエンコードすること、および複数のエンコーディングPOSTをサポートすることができます
一般的なステータスコード
- 200 OK:リクエストが正常に処理されています
- 204ノー内容:要求が成功を取り扱いますが、何のリソースがクライアントに返すことができません
- 301永久移動永久リダイレクト
- 302が見つかりました:一時的なリダイレクト
- 304は変更されません:リソースが変更されていない、アクセス、キャッシュされたリソースへのクライアントを、リソースを返すことはできません。
- 400不正な要求:リクエストパラメータエラー
- 401権限:ユーザー認証の要件が必要です
- 403は、禁止:サーバーは要求を理解したが、実行要求は拒否されました
- 404見つかりませんでした:サーバー上のリソースを要求しません。パスのエラー
- 408リクエストタイムアウト:要求タイムアウト
- 500内部サーバーエラー:内部サーバーエラー
II。4には手を振ってとのスリーウェイハンドシェイク
スリーウェイハンドシェイク
それは2ウェイハンドシェイクの場合
1. C:喂喂喂,我是 C,你听的到吗?
2. S:在在在,我能听到,我是 S,你能听到我吗?
3. C:(听到了,老子不想理你)
4. S:喂喂喂?听不听到?我 X,对面死了,我挂了。。
それは、4ウェイハンドシェイクの場合
1. C:喂喂喂,我是 C,你听的到吗?
2. S:在在在,我能听到,我是 S,你能听到我吗?
3. C:听到了,你呢?你能听到吗?
4. S:??你是智障?我不是说了我能听到吗,不想跟 xx 说话。。。
スリーウェイハンドシェイク
1. C:喂喂喂,我是 C,你听的到吗?
2. S:在在在,我能听到,我是 S,你能听到我吗?
3. C:听到了。我们今天去钓鱼吧。。balabala
概要
1. 第一次握手,C 端发送 S 端接收到,证明了 C 端的发送能力
2. 第二次握手,S 端发送 C 端接收到,证明了 S 端的接收能力和发送能力
3. 第三次握手,C 端发送 S 端接收到,证明了 C 端的接收能力
4. 在可靠的同时,还要考虑性能和时间问题,所以三次握手最合理
手を振っ四
全二重
A及びBは、互いに、テキストメッセージの類推、両側が互いに独立して、お互いにメッセージを送信することができ、同じ時間と通信することができます。
シングル全二重
話すようにAとBのみ片方向通信、携帯電話のアナロジー、同じ時間だけ一人、二人はそれが意味をなしません、誰もが追いつかなかったことを、一緒に話す場合は、別の人に耳を傾けます
手を振っ四
1. C:不好意思 S,我这边需要关闭连接了,你准备一下?
2. S:好的 C,我收到你的关闭信号了,我还有数据没发好,你等我下。
3. S:C 老弟,我可以关闭了,给你最后说一下,等下你回应我的话,我就直接关了;
4. C:好的老哥,我回应你一下,你收到就关闭吧,不用理我
5. S:(收到 ack 信息,直接就关闭了),此过程不产生数据的交互,不算挥手次数
6. C:等待 2MSL(最大报文段生存时间)后,S 没东西给过来,我也关了;
3ウェイハンドシェイクの違い
四つの真ん中を2つに3ウェイハンドシェイクハンドシェイクスプリットの二回途中の同等を振って振って
生涯の後にオフにするのはなぜ最大の新聞や他の紙のC末端必要?
それを閉じることができるので、無駄に受信できない場合でも、最大待機時間以上に起因する信頼性の低いネットワークパケットの損失を心配します、。
III。キャッシュ
有効期限(強いキャッシュ)
- キャッシュの有効期限を示しHTTP 1.0フィールド、絶対時間
Expires: Thu, 10 Nov 2020 08:45:11 GMT
- 短所:ユーザーがローカル時間を変更する場合は、ブラウザのキャッシュを無効判決を引き起こす可能性があり
キャッシュ・コントロール(強いキャッシュ)
- HTTP 1.1フィールドは、高い優先度がより有効期限が切れる時間の間に、クライアントがサーバーにリクエストを送信する必要がない、(秒)の最大リソースキャッシュの有効時間を表し
Cache-control:public, max-age=2592000
- 年齢-MAX:最大エージング時間、すなわち
- MAXAGE-S (例えばキャッシュCDNなど)プロキシキャッシュ、優先度が高いMAXAGEより
- 再検証-MUSTを:あなたは最大エージング時間を超えた場合、ブラウザは資源も有効であることを確認するためにサーバーにリクエストを送信する必要があります
- キャッシュ-NO:ブラウザのキャッシュの内容が、直接使用されていない、使用してサーバーに確認を要求します
- 保管-NOを:任意のキャッシュなし
- 公共:すべてのコンテンツをキャッシュすることができる(例えばCDNなど、クライアントとプロキシサーバーを含みます)
- privite:すべてのコンテンツは、クライアント缶キャッシュ(デフォルト値)であります
- 最大エージング= 0、必見再検証同等とキャッシュなし
Last-Modified&変更 - 開始(弱缓存)
- サーバーは、最後の時間を変更されたのLast-Modifiedレスポンスヘッダフィールドのリソースを介してクライアントに指示します
Last-Modified: Mon, 10 Nov 2020 09:10:11 GMT
- 「わからない期限の切れたかどうか」のブラウザを見つけるためにあなたが同じリソースを要求次回、独自のキャッシュからキャッシュ。したがって、Last-Modifiedの値が最後のリクエストヘッダに書き込まれる場合、修飾-ので要求のヘッダフィールド
If-Modified-Since: Mon, 10 Nov 2020 09:10:11 GMT
- サーバーは変更される場合は、-以来のLast-Modifiedフィールドの比較の値が送信されます。それらが等しい場合、修飾されていない、応答304は、最終変性フィールドを返すように続けると、それ以外の場合は、応答ステータスコード200を変更し、データおよび新しいLast-Modifiedのフィールドを返し、前記
- 短所:
- 一部のサーバーには、正確な時間を得ることができません
- リソースの更新速度は秒単位であれば、それは秒単位の最小時間であるので、その後、キャッシュが使用されていません
- ファイルを動的にサーバによって生成されている場合は、この方法の後、更新時間は常に、ファイルが変更されない場合であっても、時間を生成していない効果キャッシュそうさ
たEtag&もし-なしマッチ(弱いキャッシュ)
- ファイルに格納された識別子のETag特定の(通常は生成されたハッシュまたはMD5)、サーバーに格納ファイルのETagフィールド、
ETag: "asj1jbasdbb4skdbk-ajs"
- Last-Modified&場合 - 変更 - 以来と一貫プロセス
If-None-Match: "asj1jbasdbb4skdbk-ajs"
- たEtagのLast-Modifiedよりも高い優先順位
- より厳格な、ファイル変換および変更のEtag
階層キャッシュポリシー
- キャッシュ200からあるヒットがない場合、キャッシュ・ヒットが次の状態その後、直接読めば、底、有効期限、キャッシュ制御コントロール(有効期限よりもキャッシュ制御優先順位):
- 304:サーバーによってチェック、および戻り304旧最終変性たEtagフィールドは、ブラウザのキャッシュを読み取る場合、この層は、(優先度のEtag変性最終より大きい)最終変性たEtag制御から成り、小切手サーバ場合渡されていない、次の状態
- 200:サーバーは、小切手を渡すか、ページを更新するユーザーを強制した後、200個の文書だけでなく、新しいのLast-Modified、のEtagフィールドを返していない場合は、ブラウザのキャッシュを更新
概要
- キャッシュ制御、直前に入っては、有効期限 &変更した場合は、変更-ので、のEtag&もし-なし-マッチ時間がある秒単位での寸法のために、とのEtag&場合は、どれもマッチは、ディメンションのファイルに基づいていない、のEtagので、最も厳しいです、ファイルの変更はのEtagを変更します
- 優先度:キャッシュ制御>>のEtag>のLast-Modified有効期限
IV。参考記事
この記事では、いくつかの中で得られた試料の一部が、誤って削除されたブラウザの履歴は、記事を参照してください記事の数に彼の参照のためのほとんどが回復することはできませんまとめたもので、インサイダーは接触私を喜ば場合、私は元のリンクを占めるようになります。