1)Base64是編碼,不是加密。 編碼後,長度增長1/3左右,因爲會按照Base64的格式把空格等也編碼進去。由於不是加密,一般不想讓你看到,看到了無所謂的那些數據。
sha256和md5則是摘要化的算法,用於密碼等。就是老闆看到了,也不會知道你密碼。
websocket握手協議等,就用到了base64和sha256,對migic key進行編碼。
2)由於http的本質是tcp+握手協議,需要創建連接,每一張圖片,都對應一個http連接,下載的過程是一個IO的過程,會阻塞到這裏,線程數增加,線程頻繁切換引起CPU使用率增加。
但是卻沒有執行業務的代碼,因此Base64編碼爲字符串,跟着html一起下載下來,則減少了不必要的IO。
如果是go語言,則比較擅長這個,如果是Java,則線程多。 node.js也是基於libuv,也是基於線程的,和java一樣的問題,是等價的。
如果是協程,那會更好一點,切換減小,會是更好的工具。