生成UUID
Option Explicit
Private Type GUID
? Data1 As Long
? Data2 As Long
? Data3 As Long
? Data4(8) As Byte
End Type
Private Declare Function CoCreateGuid Lib "ole32.dll" (pguid As GUID) As Long
Private Declare Function StringFromGUID2 Lib "ole32.dll" (rguid As Any, ByVal lpstrClsId As Long, ByVal cbMax As Long) As Long
Private Function MSGIDGen() As String
? Dim uGUID As GUID
? Dim sGUID As String
? Dim bGUID() As Byte
? Dim lLen As Long
? Dim RetVal As Long
? lLen = 40
? bGUID = String(lLen, 0)
? CoCreateGuid uGUID '把結(jié)構(gòu)轉(zhuǎn)換為一個(gè)可顯示的字符串
? RetVal = StringFromGUID2(uGUID, VarPtr(bGUID(0)), lLen)
? sGUID = bGUID
? If (Asc(Mid$(sGUID, RetVal, 1)) = 0) Then RetVal = RetVal - 1
? GUIDGen = Left$(sGUID, RetVal)
? msgId = Replace(GUIDGen, "-", "")???? '替換,消除UUID中的"-"字符
? msgId = Replace(msgId, "{", "")
? msgId = Replace(msgId, "}", "")
? 'Debug.Print msgId
End Function
獲取時(shí)間戳
timeStamp = Format(Date, "yyyy-m-d ") & Format(Time, "hh:mm:ss")???
‘2019-07-31 15:39:00
Transfer-Encoding
一、Transfer-Encoding: chunked是什么?
Transfer-Encoding頭字段可以用在請(qǐng)求頭或響應(yīng)頭中。該頭字段有兩個(gè)值chunked和identity
作用:
Transfer-Encoding值為chunked時(shí),代表要把請(qǐng)求的數(shù)據(jù)或響應(yīng)的數(shù)據(jù)切割成一系列的塊數(shù)據(jù)傳輸。
Transfer-Encoding值為identity時(shí),代表不做任何處理。
二、為什么分塊?
分塊傳輸?shù)哪康氖菫榱藢?shí)現(xiàn)長(zhǎng)連接, 有了長(zhǎng)連接后就可以實(shí)現(xiàn)連接池。長(zhǎng)連接和連接池的作用是可以提高h(yuǎn)ttp請(qǐng)求的性能。
三、http長(zhǎng)連接如何實(shí)現(xiàn)?
1.什么是短連接???? 連接->傳輸數(shù)據(jù)->關(guān)閉連接
2.什么是長(zhǎng)連接???? 連接->傳輸數(shù)據(jù)->保持連接 -> 傳輸數(shù)據(jù)-> ... ->關(guān)閉連接。
3.長(zhǎng)連接為什么可以提性能?
HTTP運(yùn)行在TCP連接之上,自然也有著跟TCP一樣的三次握手、四次揮手、慢啟動(dòng)等特性。使用長(zhǎng)連接可以減少三次握手、還可以避免遇上TCP慢啟動(dòng)的擁塞適應(yīng)階段等時(shí)間,自然可以提高性能。
4.如何設(shè)置http短連為長(zhǎng)連???? Connection: keep-alive (頭部字段)
5.配置完keep-alive后,http連接如何來確定請(qǐng)求或響應(yīng)的實(shí)體邊界,即我們?cè)趺粗滥骋淮蔚恼?qǐng)求內(nèi)容或響應(yīng)內(nèi)容已發(fā)送完成?
兩個(gè)方案:
(1)判斷傳輸數(shù)據(jù)是否達(dá)到了Content-Length指示的大小。具體方法:計(jì)算實(shí)體長(zhǎng)度,并通過頭部告訴對(duì)方。
(2)設(shè)置Transfer-Encoding:chunked,進(jìn)行分塊傳輸:
方案1的問題在于某些情況下實(shí)體長(zhǎng)度并沒那么好獲得(如網(wǎng)絡(luò)響應(yīng)大文件,獲取長(zhǎng)度比較耗時(shí),客戶端需要等待較長(zhǎng)時(shí)間),于是有了方案2.
報(bào)文格式要求如下:
每個(gè)分塊包含十六進(jìn)制的長(zhǎng)度值和數(shù)據(jù),長(zhǎng)度值獨(dú)占一行,長(zhǎng)度不包括它結(jié)尾的 CRLF(\r\n),也不包括分塊數(shù)據(jù)結(jié)尾的 CRLF。最后一個(gè)分塊長(zhǎng)度值必須為 0,對(duì)應(yīng)的分塊數(shù)據(jù)沒有內(nèi)容,表示實(shí)體結(jié)束。