post请求与get请求的差别
生活随笔
收集整理的這篇文章主要介紹了
post请求与get请求的差别
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
冪等的概念
在理解這兩者的區(qū)別前需要先了解的概念:
冪等性在編程中一個(gè)冪等操作的特點(diǎn)是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影響相同。
簡單的說就是,瀏覽器發(fā)起一次請求和多次請求,不會改變目標(biāo)資源的狀態(tài),也可以說是:瀏覽器進(jìn)行了緩存。
post與get的差別
這是在網(wǎng)上找到的post請求與get請求的差別對比圖:
但個(gè)人認(rèn)為post和get差別最核心的一點(diǎn)是:
緩存機(jī)制的不同(能否被瀏覽器緩存)緩存機(jī)制
這里我們用到了開頭所講的冪等性概念。由于網(wǎng)絡(luò)的不可靠,使得等冪性顯得特別重要,因此get、head、put、delete一定要設(shè)計(jì)成等冪的:如果一次請求,服務(wù)器收到處理以后,客戶端沒有收到相應(yīng),客戶端會再次請求,如果沒有等冪性保障,就會發(fā)生意想不到的問題。
post是不等冪的,例如在segmentfault上兩次提交相同的文章,則會產(chǎn)生兩個(gè)資源。
通常HTTP 緩存只適用于 idempotent request(冪等的請求),對于其他類型的響應(yīng)則無能為力。
get請求的緩存過程
返回?cái)?shù)據(jù),在http頭部中包含last-modified(最后修改的時(shí)間) Etag(指示資源的狀態(tài)的唯一標(biāo)識)Expires(指示資源在瀏覽器緩存中的過期時(shí)間)
瀏覽器會先檢查Cache目錄中是否有該文件,并且是否過期。同時(shí)滿足這兩個(gè)條件,則瀏覽器不會在向服務(wù)器發(fā)送請求,而是直接使用緩存中的文件。
否則,瀏覽器會發(fā)送請求服務(wù)器 ,并在頭部添加If-Modified-Since 和 If-None-Match。
如果文件從上次訪問至今都沒有被修改過或Etag信息沒有變化,則直接返回一個(gè)304的狀態(tài),表明服務(wù)器端允許請求訪問資源,但不滿足條件,返回不包含任何響應(yīng)的主體部分。
解決辦法:http://blog.csdn.net/u0128368...
總結(jié)
以上是生活随笔為你收集整理的post请求与get请求的差别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [译] CSS 变量实现炫酷鼠标悬浮效果
- 下一篇: android学习第一天