json檔案縮小的實作方法:1、最佳化資料的結構,將檔案所需儲存的資料量降低;2、不要讓json中文轉碼;3、採用壓縮的演算法,現在常見的json壓縮演算法有“CJSON”與“HPack”。
在前端與後端做互動的時候,有的時候為了減少網路請求,很多時候都會將修改頻率極低產生本地化檔案直接操作,例如地址選擇的數據,現在很多平台都是採用將這樣的操作。
不過對於一些少量資料的,這是一件非常簡單的事情,但是當遇到大量資料的時候,這個就明顯GG,今天我就遇到了一個,如果按照前端既定的結構生成json文件,文件是4.2M,當時的我簡直滿臉黑線,後面找到了方法,將數據降低到0.7M,這大概是我現在的極限了,要是還想小,就只能改結構或者跟前端玩命去了。
下面講一下“壓縮的具體方式”,php為例
#一.最佳化資料的結構
想要檔案體積減小,優先考慮的應該是如何將檔案所需儲存的資料量降低。需要做的是討論最小可行的一個結構,將不需要的字段去除,將其中單詞,代碼進行縮減。
二.不要讓json中文轉碼
在呼叫PHP的json_encode()函數的時候,會將中文進行編碼Unicode,在正常情況下來看,這可能是除了使生成的json串可讀性降低了而已,不過在這種特殊情況下,也不能忽略由於編碼,而造成的額外大量的體積開銷。不進行編碼的話,會讓文件縮小很多。
這次講解,用以下函數就夠。
function jsonEncode($da) { return urldecode(json_encode(arrUrlencode($da))); } function arrUrlencode($da) { if(is_array($da)){ foreach($da as $k => $v) { if(is_array($v)){ $da[$k] = arrUrlencode($v); }elseif(is_string($v) && !is_numeric($v)) { $da[$k] = urlencode($v); } } } return $da; }
三.採用壓縮的演算法
現在常見的json壓縮演算法有CJSON與HPack,其原理都是將key和value抽離,節省掉部分的重複的key值造成的空間消耗。這次中我用到的是CJSON演算法。
HPack的基本是將key值抽離出來,被提取前和提取後的資料範例如下,看起來更像是表格化了,是不是很簡單:
# 提取前[ {name: "Lam", age: 18, gender: "男", hobit: "看书"}, {name: "Lee" , age: 20, gender: "女", hobit: "跳舞"}, ]# 压缩后[ ["name", "age", "gender", "hobit"], ["Lam", 18, "男", "看书"], ["Lee", 20, "女", "跳舞"], ]
以上是json檔案過大怎麼縮小的詳細內容。更多資訊請關注PHP中文網其他相關文章!