欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

BIM模型大文件分片上傳與斷點續(xù)傳方案解析

BIM模型大文件分片上傳與斷點續(xù)傳方案解析 1. 從一個幾十GB的BIM模型說起這個需求到底在解決什么1.1 場景還原國企工程建筑里的建模、審查與交付流程在建筑行業(yè)摸爬滾打過的朋友應(yīng)該都有體會央企國企的工程項目和普通商業(yè)項目有本質(zhì)區(qū)別體量大、周期長、參與方多而且對交付物有非常嚴格的歸檔要求。一個典型的大型公建項目結(jié)構(gòu)、建筑、機電、幕墻、景觀各專業(yè)都要出模型這些模型經(jīng)過深化設(shè)計、碰撞檢查、施工模擬之后往往還要整合成一套“綜合模型”用于審查和交底。我之前參與過一個國企項目的平臺化改造當(dāng)時碰到一個特別實際的問題各分包單位提交的BIM模型打包之后普遍在10GB到50GB之間單文件解包后更是動輒上百GB的零散文件。模型本身是按一定目錄結(jié)構(gòu)組織的比如按樓棟號、按專業(yè)、按樓層、按構(gòu)件庫分包目錄層級復(fù)雜文件名也帶著版本信息。這些模型要上傳到統(tǒng)一的Web管理平臺用于后續(xù)的進度對比、施工模擬和檔案留存。但問題來了普通的上傳方式根本扛不住。傳統(tǒng)的FormData整體提交瀏覽器端要讀整個文件到內(nèi)存再把二進制數(shù)據(jù)拼進請求體幾GB的文件大概率直接把瀏覽器干崩潰或者卡在進度條上幾個小時不動。再加上國企內(nèi)網(wǎng)環(huán)境的網(wǎng)絡(luò)波動、文件大小限制、服務(wù)器超時設(shè)置一次失敗就意味著從頭再來非常痛苦。這個項目標(biāo)題里提到的“目錄結(jié)構(gòu)分片斷點續(xù)傳”其實就是在解決這個場景下的三大痛點大文件如何穩(wěn)定上傳、上傳中斷后如何恢復(fù)、以及上傳后如何保持模型原有的目錄結(jié)構(gòu)不亂。1.2 普通上傳為什么扛不住內(nèi)存、超時和重傳的三重困境先說到底為什么傳統(tǒng)方案行不通。首先是瀏覽器內(nèi)存問題。當(dāng)我們用formData.append(file, file)這種方式上傳時如果直接傳入一個Blob對象瀏覽器本質(zhì)上要把這個文件當(dāng)做一個整體來處理。雖然現(xiàn)代瀏覽器在大部分情況下不會真的把整個文件一次性載入內(nèi)存但部分老版本內(nèi)核或資源受限的瀏覽器確實會這樣干內(nèi)存直接被打滿。即便瀏覽器做了流式處理網(wǎng)絡(luò)層面的問題依然致命。內(nèi)網(wǎng)環(huán)境下雖然帶寬理論上很高但國企內(nèi)網(wǎng)往往有安全設(shè)備、審計網(wǎng)關(guān)、流量控制策略一條長連接很容易被中間設(shè)備超時掐斷。一個10GB的文件傳了8GB連接斷了服務(wù)器端接收到的臨時文件被清理掉前端只能重新開始。這個過程重復(fù)幾次現(xiàn)場工程師心態(tài)直接就崩了。整個文件上傳還有一個隱藏問題無法精確感知每一段的進度。HTML5的xhr.upload.onprogress確實能提供一個整體進度事件但那是基于當(dāng)前請求的傳輸量計算的一旦請求被中斷這個進度就歸零。工程師看到的進度條從90%跳回0%這種體驗極其糟糕。所以分片上傳的思路本質(zhì)上很簡單把一個大文件在瀏覽器端切成若干小塊逐塊上傳。每一塊都是獨立的HTTP請求服務(wù)端收到所有分片后再拼接成完整文件。這樣做的好處是某一片失敗只需要重傳這一片而不是整個文件而且每一片的狀態(tài)都可以被記錄刷新頁面、斷網(wǎng)、甚至瀏覽器崩潰之后只要知道哪些片傳成功了就可以從失敗的位置繼續(xù)傳。1.3 目標(biāo)拆解分片、斷點續(xù)傳、目錄結(jié)構(gòu)、校驗缺一不可在動手寫代碼之前我習(xí)慣先把這個標(biāo)題拆成四個獨立的技術(shù)指標(biāo)每一項都要在方案設(shè)計階段就想清楚第一個指標(biāo)是“分片”。不管文件多大都要切割成可控大小的切片比如每片1MB到8MB前端逐片發(fā)送后端按順序拼接。第二個指標(biāo)是“斷點續(xù)傳”。這是整個方案的靈魂。它要求前端能持久化記錄每一片的上傳狀態(tài)后端也能識別哪些分片已經(jīng)存在允許前端跳過已上傳的片直接從缺失位置繼續(xù)。第三個指標(biāo)是“目錄結(jié)構(gòu)”。這個在普通文件分片上傳方案里不太被提起但BIM模型場景特別重要。模型文件不是一個孤零零的二進制文件而是一個完整的目錄樹里面混著模型文件、貼圖資源、材質(zhì)庫、鏈接文件、明細表等等。如果上傳后目錄樹被打平、層級丟失下游的所有工具都識別不出來。第四個指標(biāo)是“完整性校驗”。分片上傳不等于丟數(shù)據(jù)每片上傳后要有哈希校驗合并完成后也要有整體校驗確保拼接出來的文件和本地文件完全一致。BIM模型一旦某個字節(jié)損壞輕則模型打不開重則算量結(jié)果錯誤這在工程領(lǐng)域是絕對不允許的。我的建議是先把這個需求搞清楚再想技術(shù)方案。很多人一上來就搜“分片上傳插件”往項目里裝了一個結(jié)果發(fā)現(xiàn)插件只能傳單個文件不保留目錄結(jié)構(gòu)也沒有斷點記錄最后還是得自己改。與其繞彎子不如直接基于原生JavaScript和File API來實現(xiàn)所有邏輯都握在自己手里后續(xù)調(diào)試和擴展都方便。2. 技術(shù)方案設(shè)計先想清楚再寫代碼2.1 分片上傳的核心原理切片大小為什么通常選1MB到8MB分片上傳的第一件事就是確定切片大小。這個參數(shù)不是拍腦袋定的它直接影響上傳效率和重傳代價。切片太小比如256KB分片數(shù)量會非??鋸?。一個10GB的文件要切4萬片每片一個HTTP請求光握手開銷就把帶寬吃掉了。切片太大比如64MB雖然請求數(shù)量少了但單片的傳輸時間變長一旦網(wǎng)絡(luò)抖動導(dǎo)致某一片失敗重傳64MB數(shù)據(jù)的代價又太大同時服務(wù)端接收時對內(nèi)存緩沖區(qū)的壓力也大。我一般建議在1MB到8MB之間取一個平衡值。打個比方這就像搬家時選紙箱的大小紙箱太大裝滿后搬不動一旦路上散了損失慘重紙箱太小一趟一趟跑腿累死而且紙箱本身占地方。1MB到8MB這個區(qū)間既能保證單片傳輸在幾秒內(nèi)完成又能控制總片數(shù)在一個可管理范圍內(nèi)。用節(jié)省流量的邏輯來算更直觀假設(shè)網(wǎng)絡(luò)平均傳輸速度是5MB/s選1MB切片每片大約0.2秒傳完選8MB切片每片大約1.6秒傳完兩者在WAN場景下差別并不大但在LAN場景下更小的切片反而因為請求數(shù)量過多而拉低吞吐。所以我實際用下來5MB左右是一個比較舒服的閾值。如果走的是互聯(lián)網(wǎng)而非內(nèi)網(wǎng)再降到2MB會更穩(wěn)。每片切完之后要給每個分片生成一個唯一的標(biāo)識。比較通用的做法是相對路徑 _ 文件大小 _ 最后修改時間 _ 切片序號。這個標(biāo)識組合能大概率避免同名文件沖突而且方便定位。## 3. 前端實操目錄讀取、文件切片與斷點記錄的完整實現(xiàn)3.1 從目錄選擇到文件樹構(gòu)建讓瀏覽器“看到”BIM模型的目錄結(jié)構(gòu)BIM模型一般以文件夾形式交付文件夾內(nèi)部有清晰的層級。在Web端要保留這個層級首先得讓瀏覽器能遍歷目錄。HTML5里input typefile webkitdirectory可以做到這一點。const input document.createElement(input); input.type file; input.webkitdirectory true; input.addEventListener(change, (e) { const files Array.from(e.target.files); const tree {}; for (const file of files) { const relativePath file.webkitRelativePath; const segments relativePath.split(/); let current tree; for (let i 0; i segments.length - 1; i) { if (!current[segments[i]]) current[segments[i]] {}; current current[segments[i]]; } current[segments[segments.length - 1]] { size: file.size, lastModified: file.lastModified, type: file.type || }; } window.__fileTree tree; window.__files files; });需要注意的是webkitRelativePath在大多數(shù)Chromium內(nèi)核瀏覽器中都能正常返回類似結(jié)構(gòu)模型/B2號樓/結(jié)構(gòu).rvt這樣的相對路徑。拿到這個路徑之后我建議立刻生成一份JSON格式的目錄樹這份JSON有兩個用途一是上傳完成后給服務(wù)端做目錄重建依據(jù)二是前端自己展示文件列表時用。還有個容易被忽略的問題目錄里可能包含隱藏文件、臨時文件、回收站殘留之類的東西。在構(gòu)建文件樹時最好做一層過濾比如排除以.開頭的文件、排除__MACOSX這類常見打包殘留目錄。國企項目移交過來的模型經(jīng)常帶著各種莫名其妙的文件傳上去之后不僅浪費流量后期清理還很麻煩。3.2 文件切片與標(biāo)識生成File.slice和穩(wěn)定ID的配合文件切割在瀏覽器端非常簡單核心就是一個APIfunction createChunks(file, chunkSize 5 * 1024 * 1024) { const chunks []; let start 0; while (start file.size) { chunks.push(file.slice(start, start chunkSize)); start chunkSize; } return chunks; }file.slice()返回的是一個Blob對象它并不會真的把文件內(nèi)容復(fù)制出來而是指向原始文件數(shù)據(jù)的某一段因此內(nèi)存消耗相對可控。不過這里有一個必須注意的細節(jié)如果對文件調(diào)用slice之后原文件對象被釋放某些瀏覽器下這些Blob會變成無效引用。所以在上傳期間最好用一個數(shù)組把所有切片引用保存住直到全部上傳完成。對于斷點續(xù)傳每個分片需要有一個穩(wěn)定且唯一的標(biāo)識。我建議把標(biāo)識拆成兩個層級文件級別ID和分片級別索引。function buildFileId(file) { const path file.webkitRelativePath || file.name; return ${path}_${file.size}_${file.lastModified}; } function buildChunkId(fileId, index) { return ${fileId}_chunk_${index}; }這里我刻意沒有使用基于文件內(nèi)容的哈希作為切片標(biāo)識因為對大文件計算全量MD5或SHA-1在瀏覽器端是很慢的甚至可能造成主線程卡頓。用路徑 大小 最后修改時間來標(biāo)識文件雖然理論上存在極小概率沖突但對內(nèi)網(wǎng)交付的模型文件來說已經(jīng)足夠可靠。如果你需要更高強度的校驗可以只對第一個切片和最后一個切片做部分哈希這樣既能兼顧性能又能防止明顯的文件損壞。3.3 上傳隊列與并發(fā)控制別把服務(wù)器打懵分片數(shù)量上來之后一次性把所有分片同時發(fā)出去是不現(xiàn)實的。一個10GB的文件按5MB切大約2048片如果全部并發(fā)發(fā)起瀏覽器光在建TCP連接就把資源耗盡了而且服務(wù)端也沒辦法同時處理這么多請求。正確的做法是控制并發(fā)數(shù)。async function uploadChunksInParallel(chunks, fileId, concurrency 6) { let index 0; const tasks []; for (let i 0; i concurrency; i) { tasks.push(run()); } async function run() { while (index chunks.length) { const current index; const chunk chunks[current]; await uploadOneChunk(fileId, current, chunk); } } await Promise.all(tasks); }并發(fā)數(shù)取多少合適我試過比較多的方案內(nèi)網(wǎng)環(huán)境下6到8路并發(fā)效果最佳外網(wǎng)環(huán)境下3到4路更快。這個數(shù)字取決于服務(wù)器配置、網(wǎng)關(guān)并發(fā)限制和網(wǎng)絡(luò)帶寬。如果并發(fā)設(shè)置太高網(wǎng)關(guān)可能會直接拒絕連接設(shè)置太低又無法利用多路并行加速。每一片的上傳請求需要包含三類信息文件標(biāo)識、分片序號、分片二進制數(shù)據(jù)。服務(wù)端應(yīng)該以文件標(biāo)識 分片序號作為冪等鍵收到重復(fù)上傳時直接返回成功這樣前端在斷點續(xù)傳時反復(fù)嘗試同一片也不會出問題。3.4 IndexedDB記錄進度刷新之后繼續(xù)傳不靠運氣斷點續(xù)傳的核心在于“狀態(tài)記錄”。前端每次上傳完一片都應(yīng)該把這一片的成功狀態(tài)記錄下來。刷新頁面或者瀏覽器崩潰之后通過查詢已經(jīng)上傳的分片列表就能跳過這些分片從失敗位置繼續(xù)傳。localStorage雖然簡單但容量有限通常5MB左右而且只能存字符串。一個10GB的文件有2048片每片記錄一個ID雖然字符串不會太大但如果同時管理多個文件可能就把localStorage撐爆了。更麻煩的是localStorage的讀寫是同步的頻繁寫入會阻塞UI線程。我建議用IndexedDB來存上傳進度。它容量大、異步、性能好非常適合做斷點恢復(fù)這種場景。先簡單封裝一個存儲工具const dbName bim-upload-db; const storeName chunk-status; function openDB() { return new Promise((resolve, reject) { const request indexedDB.open(dbName, 1); request.onupgradeneeded () { const db request.result; if (!db.objectStoreNames.contains(storeName)) { const store db.createObjectStore(storeName, { keyPath: chunkId }); store.createIndex(fileId, fileId, { unique: false }); } }; request.onsuccess () resolve(request.result); request.onerror () reject(request.error); }); } async function markChunkUploaded(fileId, chunkId) { const db await openDB(); return new Promise((resolve, reject) { const tx db.transaction(storeName, readwrite); tx.objectStore(storeName).put({ fileId, chunkId, uploaded: true }); tx.oncomplete resolve; tx.onerror () reject(tx.error); }); } async function getUploadedChunks(fileId) { const db await openDB(); return new Promise((resolve, reject) { const tx db.transaction(storeName, readonly); const store tx.objectStore(storeName); const index store.index(fileId); const request index.getAll(fileId); request.onsuccess () resolve(request.result.map(item item.chunkId)); request.onerror () reject(request.error); }); }有了這個進度存儲上傳流程就變成了啟動上傳前先查IndexedDB把已經(jīng)成功上傳的分片序號過濾掉只排尚未上傳的切片進入隊列。這樣一來哪怕之前傳了一半瀏覽器崩了下次打開頁面選擇同一目錄系統(tǒng)自動識別同一批文件ID直接跳過已傳部分。這里有個必須要提醒的點IndexedDB里的記錄是“前端視角”的它代表的只是瀏覽器曾經(jīng)發(fā)出過成功響應(yīng)。如果服務(wù)端在接收某一片之后、返回成功之前崩潰了前端記錄成功但實際上后端的這一片是殘缺的。所以服務(wù)端必須在每次分片上傳時做文件大小的校驗拼接時再做一次整體校驗雙保險。3.5 合并請求與整體校驗分片傳完了不代表文件沒問題所有分片都傳完之后前端需要調(diào)用一個合并接口通知服務(wù)端把臨時目錄里的分片按順序拼接成完整文件。合并請求里要帶上文件ID、總大小、總分片數(shù)、原始相對路徑。服務(wù)端在做合并之前會先檢查分片數(shù)量和大小是否吻合再執(zhí)行合并。合并完成后我強烈建議做一次文件級校驗。最簡單的方式是前端在構(gòu)建文件ID時記錄文件總大小合并后由服務(wù)端返回合并后的文件大小和哈希值前端進行比對。如果要做更嚴格的校驗可以對整個文件做一次MD5計算但大文件的整體哈希計算在服務(wù)端也需要一定時間所以實際工程中我更傾向于讓前端對文件的第一個和最后一個切片做MD5作為強校驗的近似替代其余切片用大小校驗兜底。校驗通過之后目錄樹JSON和文件實體是分離的。前端在上傳分片的同時應(yīng)該把目錄樹數(shù)據(jù)一并提交給服務(wù)端元數(shù)據(jù)表。服務(wù)端拿到目錄樹和數(shù)據(jù)文件后會按相對路徑在目標(biāo)存儲位置重建目錄結(jié)構(gòu)把文件落到對應(yīng)目錄節(jié)點下。這個過程可以在合并接口里一并處理省去一次請求。4. 后端配合接口設(shè)計、合并策略與存儲規(guī)劃4.1 三個核心接口初始化、上傳分片、合并前端做得再好后端接口設(shè)計跟不上也是白搭。我們只需要三個核心接口不復(fù)雜但每一步都要考慮邊界情況。第一個是初始化接口。前端在開始上傳前先調(diào)用它把自己要傳的文件ID、文件總大小、文件名、相對路徑發(fā)給服務(wù)端。服務(wù)端返回一個uploadId并在臨時目錄下創(chuàng)建以uploadId為名的子目錄后續(xù)該文件的所有分片都存在這個目錄里。第二個是上傳分片接口。請求參數(shù)包括uploadId、chunkIndex、chunkSize二進制分片數(shù)據(jù)放在請求體中。服務(wù)端把分片寫入臨時目錄/uploadId/chunkIndex.part然后返回成功。如果這個分片已經(jīng)存在且大小一致直接返回200不上傳也沒問題。第三個是合并接口。參數(shù)包括uploadId、文件總大小、總分片數(shù)、目錄樹JSON。服務(wù)端先校驗分片完整性然后按索引順序合并寫入最終存儲路徑最后重建目錄樹。合并成功之后刪除臨時目錄返回文件元數(shù)據(jù)。我遇到的比較常見的問題是很多團隊在初始化接口里就做了大量業(yè)務(wù)判斷比如數(shù)據(jù)庫查重、權(quán)限校驗、隊列檢查結(jié)果初始化慢得像龜速。工業(yè)級場景應(yīng)該把初始化接口做得盡量輕量只負責(zé)創(chuàng)建上傳會話所有業(yè)務(wù)判斷放在后續(xù)流程里異步執(zhí)行。4.2 服務(wù)端分片存儲與合并策略流式拼接比內(nèi)存拼接靠譜服務(wù)端接收分片時最容易犯的錯誤是把所有分片讀入內(nèi)存再拼接。一個5MB的分片乘以2048片就是10GB內(nèi)存正常的服務(wù)器根本扛不住。正確的做法是分部落地。每收到一片直接使用文件流寫入磁盤路徑按uploadId 序號組織。合并時逐片打開文件使用流式方式將內(nèi)容追加到目標(biāo)文件尾部。Node.js里用createReadStream和createWriteStream配合管道操作每合并完一片就關(guān)閉資源內(nèi)存占用始終保持恒定。合并校驗的策略也要細化。我通常會維護一個分片元信息表記錄每片的實際大小。合并前檢查兩件事已上傳分片的數(shù)量是否等于總分片數(shù)、每片的大小是否與預(yù)期一致。如果發(fā)現(xiàn)缺失或缺損返回前端一個“缺失分片列表”讓前端針對性重傳缺失的片而不是整個文件重傳。這種“按需補片”機制在弱網(wǎng)環(huán)境下尤其好用。關(guān)于磁盤規(guī)劃臨時目錄要有獨立的分區(qū)不能和系統(tǒng)目錄混在一起。之前我遇到過一次項目臨時目錄寫在系統(tǒng)盤模型上傳量一大系統(tǒng)盤被塞滿整個服務(wù)器直接無響應(yīng)。臨時目錄的清理策略也要有。合并成功之后立即刪除對應(yīng)分片這是最基礎(chǔ)的要求。還要加一個定時任務(wù)清理超過48小時仍處于未完成狀態(tài)的上傳目錄防止黑客或異常任務(wù)占滿磁盤。4.3 并發(fā)沖突與重復(fù)分片的冪等處理上傳過程中前端可能會因為網(wǎng)絡(luò)超時對同一個分片重復(fù)請求。服務(wù)端必須對這種情況做冪等處理。用uploadId chunkIndex作為主鍵如果發(fā)現(xiàn)同一個分片已經(jīng)存在且大小一致就直接返回成功不重復(fù)寫磁盤。合并操作的并發(fā)控制同樣重要。我建議用一個鎖標(biāo)記來防止同一個uploadId被多個合并請求同時操作。比如在數(shù)據(jù)庫會話表里加一個mergeStatus字段合并中、合并完成、合并失敗。前端偶爾會因為超時對合并接口重復(fù)請求一對服務(wù)端看到“合并中”狀態(tài)可以適當(dāng)阻塞等待看到“合并完成”直接返回結(jié)果避免合并邏輯執(zhí)行兩次產(chǎn)生臟數(shù)據(jù)。5. 國企工程場景下繞不開的坑與排查實錄5.1 網(wǎng)絡(luò)波動與斷網(wǎng)恢復(fù)指數(shù)退避重試是基礎(chǔ)操作國企內(nèi)網(wǎng)雖然有專線但不算穩(wěn)定。特別是部分老辦公樓里的網(wǎng)絡(luò)設(shè)備高峰期經(jīng)常出現(xiàn)大量丟包。分片上傳遇到單次網(wǎng)絡(luò)失敗是常態(tài)所以前端必須有一套重試機制。我比較推薦指數(shù)退避策略第一次失敗等1秒重試第二次失敗等2秒第三次等4秒最多重試5次。如果連續(xù)5次失敗就把這個分片標(biāo)記為失敗但不中斷整個上傳流程而是繼續(xù)處理其他分片失敗的分片放到隊列末尾最后統(tǒng)一補傳。實際體驗下來這種“邊傳邊補”的策略比“遇到失敗就停止整個上傳”強太多因為網(wǎng)絡(luò)抖動通常是短暫的給一小段時間它自己就恢復(fù)了。斷網(wǎng)的情況更特殊。瀏覽器檢測到網(wǎng)絡(luò)斷開時所有請求會失敗。這時候前端應(yīng)該暫停整個上傳隊列監(jiān)聽online事件網(wǎng)絡(luò)恢復(fù)后重新查詢IndexedDB里的上傳狀態(tài)對未完成的分片繼續(xù)上傳。在這個過程中不需要刷新頁面體驗是連續(xù)的。5.2 瀏覽器崩潰與內(nèi)存占用優(yōu)化用Web Worker把哈希計算挪到后臺瀏覽器崩潰是分片上傳最容易遇到的問題大多數(shù)原因是內(nèi)存占用過高。雖然File.slice()不會一次把整個文件載入內(nèi)存但部分場景下比如多個文件同時讀取、切片對象持有大量引用內(nèi)存還是會快速攀升。我的經(jīng)驗是每次從磁盤讀取一個切片后立即上傳并釋放引用不要一次性把所有切片都放進一個數(shù)組里。上面給出的createChunks示例雖然是全量創(chuàng)建但實際項目中我會改為懶加載切片function getChunk(file, chunkSize, index) { const start index * chunkSize; const end Math.min(start chunkSize, file.size); return file.slice(start, end); }這樣每次只保留當(dāng)前正在上傳的幾片內(nèi)存占用大幅降低。如果是做全量文件哈希校驗一定不要在主線程做。一個10GB文件的全量MD5計算在瀏覽器里可能需要幾十秒甚至幾分鐘在這期間頁面會卡死。正確做法是把文件交給Web Worker在Worker線程里分片讀取并計算哈希計算完畢通過postMessage把結(jié)果傳回主線程。這樣用戶可以繼續(xù)操作界面不會出現(xiàn)“頁面已失去響應(yīng)”的尷尬。5.3 老舊瀏覽器與國產(chǎn)化內(nèi)核兼容降級方案要提前想好國企辦公環(huán)境里瀏覽器的實際情況可能超出技術(shù)人員想象。有大量存量電腦還在使用老版本的Chromium內(nèi)核瀏覽器有些國產(chǎn)瀏覽器默認跑在兼容模式下。這些環(huán)境下webkitdirectory、IndexedDB這些特性可能是缺失的。我建議在頁面加載時做一次能力檢測分別檢測File.slice、webkitdirectory、indexedDB是否可用。如果某一項缺失就啟用降級方案。比如沒有IndexedDB就用localStorage存進度沒有webkitdirectory就不支持目錄選擇改為讓用戶選擇單個文件或壓縮包實在不行就退回最原始的整包上傳方案。雖然這些降級方案體驗差很多但總比“打開頁面什么都做不了”強。我遇到過某國企內(nèi)網(wǎng)瀏覽器連File.slice都不支持的情況那套系統(tǒng)所有文件上傳都只能走傳統(tǒng)方式這是平臺底層的硬傷前端只能盡量兼容沒法完全替代。### 5.4 安全與審計模型文件是核心資產(chǎn)不能裸奔BIM模型在工程項目里屬于核心數(shù)據(jù)資產(chǎn)里面包含了完整的建筑結(jié)構(gòu)信息、設(shè)備參數(shù)、工程量清單一旦泄露或者被篡改后果非常嚴重。所以上傳過程不能只想著“傳上去就行”還得考慮安全與審計。權(quán)限控制是第一層。上傳接口必須驗證用戶身份不能匿名上傳。我當(dāng)時所在的系統(tǒng)對接了統(tǒng)一的身份認證平臺上傳時每次請求都要攜帶token。分片上傳接口也同樣校驗不能因為它是“部分數(shù)據(jù)”就放寬權(quán)限。操作日志是第二層。上傳開始、分片接收、合并完成、文件刪除這些操作都要記錄到日志系統(tǒng)。日志里至少要包含操作人、操作時間、文件ID、分片序號、結(jié)果狀態(tài)。國企項目的審計是要落實到具體人和具體操作的這個不能省。文件校驗是第三層。合并完成后對文件做一次病毒掃描和類型檢測。你可能會覺得奇怪模型文件怎么會有病毒但實際上從外部協(xié)作單位移交的模型包經(jīng)?;烊敫鞣N可執(zhí)行文件、宏病毒、惡意鏈接。服務(wù)端在把文件暴露給其他系統(tǒng)訪問之前必須經(jīng)過安全檢測。這不僅是技術(shù)問題更是合規(guī)問題。6. 實測效果、踩坑記錄與可復(fù)用的經(jīng)驗6.1 實測環(huán)境與最終效果在項目收尾階段我們做了幾輪壓測。測試環(huán)境是一套典型的國企內(nèi)網(wǎng)配置一臺4核8GB的應(yīng)用服務(wù)器一臺文件存儲服務(wù)器客戶端是普通辦公電腦。測試對象是一個約35GB的綜合BIM模型包包含5600多個文件目錄層級在5層左右。使用5MB分片、6路并發(fā)、開啟IndexedDB斷點恢復(fù)的方案整體上傳耗時大約2小時左右。期間人為中斷了兩次網(wǎng)絡(luò)每次恢復(fù)后系統(tǒng)都能自動從斷點繼續(xù)沒有出現(xiàn)重復(fù)上傳已成功的分片。服務(wù)端合并完成后校驗文件大小與源文件完全一致目錄結(jié)構(gòu)也按照原始樹狀關(guān)系落到了存儲區(qū)。相比之前用普通上傳方式“傳一天斷三次”的體驗這套方案可以說是從“不可用”變成了“可用”。6.2 踩過的坑與對應(yīng)解決方法第一個坑是并發(fā)數(shù)設(shè)置過高導(dǎo)致服務(wù)端連接數(shù)被打滿。第一次測試時我圖快直接上了20路并發(fā)結(jié)果應(yīng)用服務(wù)器的連接池瞬間被耗盡所有請求全部排隊等待整個Web應(yīng)用的其他功能也跟著卡住。后來把并發(fā)數(shù)降到6問題消失。這個參數(shù)最好做成配置項根據(jù)實際服務(wù)器負載動態(tài)調(diào)整。第二個坑是目錄名里包含中文、空格和特殊符號。模型交付方經(jīng)常用“B2號樓-裝修-2024-最終版”這種命名方式。如果文件ID直接用整個相對路徑拼接偶爾會出現(xiàn)空格導(dǎo)致的解析錯誤。解決辦法是在生成文件ID時用編碼后的相對路徑或者把路徑單獨作為一個字段存放不在ID里直接拼接。第三個坑是合并時對大文件使用同步拼接導(dǎo)致服務(wù)端無響應(yīng)。最初的實現(xiàn)是把所有分片讀入數(shù)組再用Buffer.concat合并一個4GB的文件直接導(dǎo)致內(nèi)存溢出。改成流式合并之后就穩(wěn)定了。這就是我前面反復(fù)強調(diào)流式處理的原因——在這個場景里它不是一個可選項而是必須項。第四個坑是清理任務(wù)誤刪未完成的上傳目錄。定時清理我最初設(shè)置的閾值是24小時但有些超大模型文件因為網(wǎng)絡(luò)原因連續(xù)傳了超過24小時結(jié)果被清理任務(wù)在合并前刪掉了。后來我把閾值改成48小時并且加了個“有進行中上傳任務(wù)”的保護判斷才徹底解決。6.3 一個很實用的小技巧服務(wù)端返回缺失分片列表最后分享一個我自己覺得特別實用的技巧。在合并接口的校驗階段服務(wù)端除了返回“失敗”之外還要返回具體的缺失或異常分片序號列表。前端拿到這個列表后只需要重傳這幾片然后再次調(diào)用合并接口。這個過程可以循環(huán)直到合并成功。這種方法在處理“某些分片損壞但不清楚是哪些”的情況下非常高效比無腦全量重傳強一個量級。我之所以一直強調(diào)這個方案里的“分片斷點目錄結(jié)構(gòu)”三件套要組合起來看是因為在真實的國企工程建筑場景里這三個需求從來都是同時出現(xiàn)的。一個只支持分片上傳、不支持斷點恢復(fù)的插件在弱網(wǎng)條件下仍然會讓工程師崩潰一個支持斷點但忽略目錄結(jié)構(gòu)的上傳工具傳完之后下游工具用不了等于白傳。只有把三者打通才能真正解決生產(chǎn)環(huán)境里的問題。如果你也正在處理類似的需求建議先拿一個真實的BIM模型包做測試不要用幾個小文件模擬。真實場景下的大文件數(shù)量、目錄深度、命名習(xí)慣都會逼著你把邊界情況想清楚。這套方案跑通之后后續(xù)無論是擴展上傳進度展示、增加上傳任務(wù)隊列還是對接消息通知都是在現(xiàn)有骨架上做增量開發(fā)很順手。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久热天堂| 五月激情六月宗合| 玖玖婷婷色五月| 中文字幕在线免费观看视频| 狠狠狠狠操| 久人操| 婷婷五月天堂| www.婷婷五月天.com| 免费九九热| 色色综合网www| 美女激情综合| 五月天色不卡| 性生活久久朋友人妻| 免费观看亚洲AV片| 超级碰碰一区| 中文不卡一二三区| 久久之人妻| 亚州婷婷五月激情综合| 操精品9| 丰满人妻一区二区三区| 伊人久久五月天| 色婷婷色婷婷五月| 日韩久久这里只有精品| 99爱免费在线观看| 婷婷激情五月天天天开心| 丁香花操逼| 无码少妇高潮喷水A片免费| 五月天狠狠| 五月丁香六月激情综合啪啪| 激情五月天在线观看色婷婷| 4399成人黄A片| 99操不停| 五月婷中文娱乐综合| 四色99久久| 久久98| 狠狠草网| 久re热视频| 五月J香蕉婷婷| 亚洲1区| 六月婷婷开心| 日本熟女一区二区| 欧美婷| 丁香五月亚洲激情婷婷射| 色婷婷AV在线| 久久99婷婷| 日本97久久久精品| 六月婷婷色色色| 丁香婷婷综合喷| 色五月综合激情网| 97超级碰| 色色五月激情| 日本激情91| 色婷婷亚洲婷婷在线观看| 综合狠狠干| 天天久久66xxx| 九九这里是免费的视频5| 五月婷婷丁香综合,亚洲天堂| 被强行糟蹋的女人A片| 婷婷五月六月| 国产69精品久久久久999小说| 综合五月天| www.99热| 字幕网AV中文字幕| 中文字幕婷婷在线| 色婷婷久久天天性爱| 五月婷婷综合影院| 欧美性爱五月天| 久久综合性| 色五月天丁香婷婷| 韩日在线熟女| 成人丁香婷婷五月天| 79色色| 26uuu国产| 丁香五月婷婷亚洲综合精品| 五月婷婷在线视频| 激情综合丁香六| Y11111111111少妇电影院| 五月精品99综合| 五月丁香久久婷| 无码色综合| 五月丁香久久久久| 99热这只有| 丁香激情合作五月| 野战毛片三一3| 色私五月婷婷| 激情婷婷狠狠干| sewuyuejiqingwang| 婷婷五月综合在线视频| 天天日天天插| 婷婷色婷婷| 婷婷六月激情综合| 日熟女| 色婷婷丁香| 丁香婷婷六月婷婷六月婷婷六月婷婷| 99热色在线精品| 五月丁香综合中文| 欧美性生交XXXXX无码小说| 大香蕉伊人丁香五月| 综合色视频| 色欲av伊人久久大香线蕉影院| 五月激情丁香久久综合网| 亚洲精品久久久久久久久久吃药| 婷婷久久精品| 7777国产盗摄农村女人| 99操视频| 开心色五月天久久久久久久| 91超级碰碰碰| 色综合久久99色| 免费的日逼视频| 色五月视频,小说| 久色激情| 久草婷| 色综合久久88色综合天天99| 天天干天天操天天爱| 婷婷久久精品| 久草视频大香蕉99| 一區四區歐美日韓| 亚洲无码成人| 五月丁香中文| 五月婷婷丁香六月| 欧美婷婷丁香五月社区| 丁香婷婷影院| 国产成人精品123区免费视频| 在线99色| 色婷婷五月天不卡| 强壮的公次次弄得我高潮A片日本 | 久久久9久| 大香蕉婷婷丁香天堂AV| 夜夜骑天天操| 久婷狼色诱惑在线| 日日操,日日爽| 五月丁香啪啪网| 嫩BBB搡BBBB榛BBBB| 香焦网五月天| 色婷婷视频在线| 99久视频| 丁香五月激情婷婷视频| 激情无码网| 久久涩视频| 永久的网站AAAA| 久久这里有精品| 国产精品国产成人国产三级| 亚洲精品色色| 婷婷丁香色五月| 丁香六月婷婷激情| 天天干天天操| 欧美一级毛卡片无码| 98永久精品| www.婷婷,com| 97在线观视频免费观看| 国产69久久久欧美黑人A片| 麻豆雪千夏| site:feetmall.com| 丁香五月天堂| 开心深爱五月天| 欧美视频五区| 97色97干| 五月天社区| 日韩天堂久久| 思思久久精品| 久婷婷色| 日韩性视频| 婷婷玖玖丁香| 丝袜激情网| 六月丁香啪| 五月丁香五月天现场视频| 激情五月天婷婷| 天天干,天天舔| 视频一二区| 成人短视频免费| 精品色色色| 国产91资源在线| www.夜夜操.con| 97色色婷婷| 色婷婷888| 天天日天天插| 激情综合五月| 这里只有精品视频| 丁香五月亚洲婷婷| 51精品国内探花| 久色国产| 久久久久久久久久久44| 五月丁香婷婷中文| 六月色日韩| 大香蕉综合在线| 99惹在线精品免费观看| 国产午夜精品AV一区二区麻豆| 亚洲五月天天| 伊人大香蕉毛片| 五月天色婷婷小说| 久久婷婷五月综合色和| 久久玖玖综合| 日本3级片偷拍网站| 亚洲婷婷五月| anquye伊人| www.色五月| 夜夜操夜夜爽| 色yeye欧美| 九九这里都是精品| 色综合色五月| 97超碰免费超级在线观看| 婷婷六月丁香色| 99热在线观看成人| 99九色视频在线观看| 激情五月丁香五月| 99天堂在线观看免费视频| 天天摸天天日天天舔| 色播色丁香五月| 亚洲婷婷免费| 天天开心天天色| 日本人妻A片成人免费看片| 六月综和久久| 五月婷婷九| 99人妻碰碰碰久久久久禁片| 这里只有国产精品在线| 91在线视频综合| 国产67194| 五月激情日本在线| 五月婷婷九九久久| 99这里有精品| 66成人网| 思思99热这里只有精品| 99日热在线视频| 狠狠狠色激情综合适合| 婷婷综合激情五月中文字幕| 激情综合在线播放| 青草青草视频2免费观看| 九九热这里只有精品31| 婷婷在线免费| 五月花激情网| 亚洲国产精品二二三三区| 日本色狠狠| 五月丁香婷婷色| 风流少妇A片一区二区蜜桃| 五月婷六月| 99久久综合| 新激情婷婷| 9l视频自拍9l九色9l成人| www.精品99| 精品九九婷婷| 九九视频在线观看视频6| 五月丁香五月婷婷在线观看| Av性爱网站| 1024在线视频| 怎么样可以看免费的一级av| 日韩1区2区| 人人操人人爱丁香五月| se色99| 五月天婷婷亚洲| 色婷婷成人做爰A片免费看网站| 天天草天天摸| 日韩欧美骚货| 96性爱视频| 99九九精品视频| 久久婷婷丁香花综合网| 久久激情网| 这里只有精品视频| 66精品成人免费网站在线观看| 99操逼视频| 九九成年视频| 黄桃AV无码免费一区二区三区| 婷婷综合五月天| 2020久久婷婷五月| 第2色五月婷| 99热亚洲精品| 海外网站专业操老外| 操操操B| 大香蕉久操| 久久这里有精品| 翔田千里无码| 26UUU在线观看| 色五月丁香六月资源站| 丁香综合网| 免费操超碰| 玖玖色综合色| 婷婷无五月无码视频| 婷婷激情小说| 五月激情六月宗合| 能直接看的av网站| 99热这里只有精品3| 色色色热热热| 婷婷激情综合| 色五月婷婷五月天| 婷婷五月天亚洲综合| 俺也高清无码高清视频| 综合九九| 丁香婷婷基地| 五月精品| 97干欧美| 成人丁香五月天| 婷婷丁香亚洲色综合91| 色99自拍| 丁香五月性| 玖玖爱综合网| 婷婷午夜| 五月丁香综合激情| 免费看欧美成人A片无码| 久久激情综合| 亚洲精品白浆高清久久久久久| 99热这里是精品| 97人人射| 九九热在线精品视频| 久久HD| 九九热这里只有精品6| 激情综合婷婷| 69精品人人人人| 狠狠色丁香| 色激情五月| 色色激情| 四川女人毛多水多A片| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 182TV大香蕉| 欧亚中文A V| 葵花AV在线| 国产超碰av| 激情五月天福利| 日日操夜夜擼| 九九九九无码| 91大神操美女| 婷婷成人综合免费视频| 日韩精品无码99| 激情五月丁香六月综合AVXXXX| 婷婷噜噜| 97操视频| 久草热8精品视频在线观看| 青草视频在线观看视频| 久热伊人在91| 五月久久五月激情| 99热99re6国产在线播放| 五月丁香淫淫婷婷婷| 色情成人五月天| 99久.| 五月丁香婷婷中文| 51精品国自产在线| 久久曰9| 五月丁香视频色色| 丁香五月天激情网址| 婷五月丁香| 91人妻视频| 色情五月婷婷| 六月色婷婷| 一起草AV入口| 任我肏| 色亚洲中文| 噜噜噜噜噜色| 色99网站| 91丨九色丨国产在线| 久久资源网五月婷| 国产高清RV综合aVa| 九九热在线99| 五月天色色网站| 日日夜夜天天| 婷婷激情四射网| 99 热| 亚洲第一精品成人999久久精品| 伊人婷婷大香蕉| 久久婷婷五月天| 欧美婷婷综合| 日韩激情婷婷五月天| 久久婷婷综合五月趴| 久久HD| 1024在线一区| 精热在线综合网| 五月丁香婷婷成人综合网| 亚洲AV人人操| αV电影| 99re热视频这里只有综合亚洲| 激情宗合网激情五月天| 色色亚洲视频| www.色9| 去干网最新版本亚洲版| 五月丁香六月婷婷久久| 91oumei| 99综合婷婷五月| 啪啪色区| 99久久偷拍视频| 亚洲丁香婷婷五月天综合色| 色色丁香婷婷综合| 五月开心啪啪| 久久五月婷天天干| 午夜天堂一区人妻| 日韩五月婷婷| 亚洲人妻AV| 99热久久日本| 婷婷情色激情| 色135综合网| 99操视频| 大香蕉久久久久| 色yeye欧美| 色综合五月在线| 激情五月天视频| 99热999| 婷婷激情五月综合丁| 五月婷婷婷| 99色在线观看视频| 九九热这里只有精品6| 日韩av一区二区在线/日产精品久久久 | 天天色激情| 武则天精品久久| 五月婷婷性爱视频| 五月丁香网中文字幕| 久操大香蕉| 日本色色网站| 丁香激情五月天| 67久久| 先锋av性爱成人电影| 五月丁香狠狠爱| 99久在线视频| 色婷婷丁香| 久久精品夜色噜噜亚洲a∨| 九九综合久久| 艹色18p| 五月精品免费XXX| 无遮挡国产高潮视频免费观看| www.99在线| 日本一级| 99久久综合| 91婷婷丁香| 日本系列_4页_777FP| 狠狠狠狠狠| 九色在线观看91av| www.五月丁香| 婷婷久月| 五月婷婷综合网| 九九综合精品| 色色五月婷婷网| 深爱五月亚洲| 极品五月天| 九九热99热| 91pornav在线| 站长推荐无码播放| 成人五月天在线观看| 久久天天| 五月丁香六月色情网欧美| 荡乳尤物3HP1V5| 久久网站观看免费欧洲国产| 天天插天天射| 五月天自拍视频| 天天日天天爽| 丁香五月冃欧美| 九月色婷婷婷| 中文字幕AV网址| www,久久久| bbwcuckold精品熟妇| 久久怡红院| 婷婷六月开心网| 久久五月婷综合| 婷婷五月草| 五月丁香六月激情综合| 色吧综合网| 日本a片网址| 久久久久久久人妻| 激情色视频| www.99精品视频| 粉嫩av蜜桃av蜜臀av| 天天做天天爱天天搞| 泰州成人视频| 激情五月天www| 亚洲成人在线综合| 国产FREESEXVIDEOS性中国| 婷婷激情六月中文| 97色操| 丁香六月婷婷综合色| 丁香婷婷精品视频| 西西4r午夜剧场| 久久人妻乱| 视频1区2区| 婷婷五月天基地| 国产成人va在线| 色综合久久综合| 天天干夜夜想| www激情网| 久Se视频在线观看| 亚洲无AV在线中文字幕| 色偷偷综合| 热99国产精品| 色婷婷五月丁香色| 婷婷六月天| 五月天久久综合婷婷丁香| 久久婷婷国产| 玖玖99婷婷| av久热| 五月综合婷婷网| 五月香蕉婷婷| http://www.com久久久精品一区| 深爱激情五月婷婷| 五月婷婷色播视频| 亚洲无aV在线中文字幕| 99国产在线精品视频| 国产综合色婷婷精品久久| 五月婷婷综合网| 2025年最新亚洲在线欧美| 超碰人人操在线| 91久久网站| 精品人妻一区二区三区四区不卡在| 俺去也在线官网| 996热re视频精品视频| 国产免费性爱| www夜夜| 五月人妻婷婷视频| 精品九九视频| 五月丁香网av| 婷婷午夜激情| 成人AV网站在线| 青青久在线视频免费观看| 99免费热视频在线| 丁香五月综合激情久久潮喷| 男女啪啪做爰高潮无遮挡| 丁香婷婷五月综合| 99热6色| 99色在线| 丁香五月激情棕合| 第四色五月婷婷| 大香蕉 婷婷| 五月花免费视频| 亚洲综合五月天| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 久久曰曰| 99精品视频在线观看| 国产精品久久久60086| 色婷婷五月天偷拍| 99碰在线视频| 狠狠狠狠草草| aaaa久久| av五月天婷婷丁香| 久9综合| 黑人巨粗进入警花疼哭A片| 91丨九色丨熟女丰满| 丁香五月电影| 亚洲综合激情五月| 婷婷五月色網站| 午夜爱爱爱成人| 99在线免费视| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 色在线99| 久久a热| 久久人妻www| 色性日本| 99热成人在线| www.日日夜夜.com| 天天骑天天操| www,超碰| 开心激情播播五月天| www.lingjunshare.com| 婷婷五月 丁香六月| 欧美狠狠草| 亚洲婷婷五月天在线激情综合网| 那里有AV网址| 热99这里只是精品| 91操色| 亚洲综合激情五月久久| 欧美性猛交99久久久久99按摩| 欧美丁香婷婷五月| 亚洲欧洲另类| 色综合久久之分久久| 伊人丁香五月天丁香在线婷| 亚洲精品第一国产综合亚AV | 可以免费观看的av| 亚洲国产无线乱码在线观看| 五月婷婷丁香91| 在线五月婷| 丁香五月 激情文学| 久久一操| 97碰碰在线观看视频| 99人人干人人| 激情婷婷五月久久| Va另类视频| 91精品久久久久久综合五月天| 91人人爽久久涩噜噜噜| 狠狠激情五月天| 国产成人亚洲综合A∨婷婷| 少妇人妻人伦A片| 色狠狠色| 国产午夜精品一区二区三区四区| 婷婷婷久久| 久综合九| 久这里只有精品| 嫩草综合网| 免费五月婷婷网| 六月撸婷婷| 色爱综合网| 婷婷丁香红五月91C| 丁香97综合| 亚洲综合久| \\五月天婷婷激情| 久久久精品人妻| 亚洲日日操| 97超碰,人人舔,人人操,人人摸| 大香蕉久久青青| 婷婷福利影院| 人人操操97| 九九黄色网| 五月丁香色婷婷熟女| 综合XX网| 最新高清无码专区| 色吊丝永久访问网址| 丁香五月网络网络| 五月六月丁香激情| 色婷婷久久| 97超碰99热99| 丁香五月婷婷亚洲色图| 久久久这里有精品| 天天干天天拍| 色天使色婷婷| www.丁香黄色五月天人与| 九九视频在线| 男妓跪趴把舌头伸进我的嘴巴| 99九九免费精品| 99热乎| 丁婷婷五月天在线播放| 图片区 小说区 区 亚洲五月 | 夜夜骑日日夜夜| 色播五月天激情| 五月天婷婷成人网| WWW.久久久久久久| 五月花婷婷丁香| 精品久热| 超碰在线国产9| 新激情五月天色播| 99ri在线观看视频| 毛v一区二区视频| 婷婷97狠狠成人网站| 九九色区| 婷婷五月噜噜| BBWCUCKOLD精品熟妇| 久久精品63| 色色色国产| 久久99久久99精品免视看婷| 激情碰碰碰| va中文资源在线观看| 婷婷激情九月| 九九九九九九毛片| 天天舔天天插天天干| 色色网站在线| 色色五月天丁香婷婷| 五月丁香狠狠| 亚洲电影在线观看| 97亚洲色 torrent magnet| www.色婷婷| 丁香六月天婷婷色| 五月丁香拍拍激情综合| 久久五月天综合| 久久久久久久久久91| 婷婷五月天开心激情网| 69天堂99| 天天操狠狠操| 991自拍视频| 色婷婷裸体色性在线| 青青草伊人婷婷| 婷五月丁香| 成人无码髙潮喷水A片| 99热99日…..| 国产高潮A片羞羞视频涩涩| 丁香五月六月久久综合| 综合色色色| 久久久久久久久久91| 天天日夜夜曹| 婷婷五月丁香色播| 丁香五月婷婷日本| 久久aaaaa| 五月丁香婷婷激情视频| 亚洲天堂玖玖| 丁香五月天激情视频| 超爽内射| 婷婷激情图片| 色欧美影院| 99视频只有精品| 色播激情| 婷婷香五月天| 操逼三区| 激情丁香婷婷| 激情深爱婷婷网| 少妇性按摩无码中文A片| 亚洲性爱干干| 久久R激情| 99久久婷婷国产综合精品| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 综久久久| 丁香五月播播| 91精品综合久久婷婷九色| 五月天婷婷在线观看| 丁香五月成人自拍| 99九九视频| 九九操操| 99热久久这里只有精品| 亚洲综合色丁香五月天| 免费超碰在线| 一起草性爱不卡视频| 久久婷婷五月草视频在线播放| av大片在线| 亚洲热视频| 综合五月婷婷| 久草婷婷在线| 97色天堂| 色婷婷4| 99热99草97| 亚洲色网址| 久久久人人人妻丝丝丝| 九九精品热播| 极品少妇高潮啪啪AV无码| 这里精品| 日韩免费乱轮网站| 亚洲性爱AV| 天天干天天操天天拍| www.热99热| 玖玖婷婷五月| 狠狠爱青青草| 丁香六月婷婷综合激情欧美| 思思久久思思| 91色婷婷综合久久中文字幕二区| 韩国中文字幕91| 任你搞网站| www.伊人天堂偷偷婷婷| www..999热久| 五月丁香色欲| 五月开心久久| 99色在线视频| 色色丁香五月婷婷| 久久网日本| 五月婷婷久久网| 玖玖资源在线视频| 丁香五月婷婷日本| 中文不卡一二三区| 97啪啪| 91seAV| 天天综合精品| 欧美人人操| 婷婷五月天在线观看第二页| 婷婷激情五月天网站| 99色久| 久久人妻超碰一区| 五月婷婷六月色| 另类视频五月天| 激情五月视频| A一级操| 欧美在线看| 日本wwww在线| 欧美日本韩国亚洲| 天天色天天操天天射| 丁XX 成人| 五月婷婷伊人在线| 久久奄也去色色网站| 九九亚洲视频| 久久久.COM| 色婷婷综合在线| 超碰国产在线播放| www.99热| 99视频精品在线| 成人电影在线免费试看| 天天干天天操天天爽| 亚洲五月天婷婷综合| 日本的α片xxxwww| 久热婷婷| 超碰色综合| 五月婷婷六月丁香首页| 男人的天堂av俄罗斯热| 黄网在线免费| 在线观看免费人成视频无码| 亚洲操操操| 97在线视频观看| www.五月天色色.com| 婷婷五月天六月丁香| 五月丁香婷婷激情视频| 婷婷五月深深爱| 少妇人妻凹凸视频| 色五月婷婷婷婷| 伊人在线婷婷草| 99热www.| 在线综合婷婷| 91视屏在线观看com.wwwvv| 深爱激情网五月| 精品视频这里只有精品| 色婷婷五月开心六月综合| 久久曰曰| 一起草无码视频| 超碰av在线| 天天操天天日天天爱| 久久这里只有精彩| 五月天激情综合首页| 99re66热这里只有精品| 思思久久网| 婷婷丁香五月天婷婷| 亚州精品色情无码A片| av大香蕉| 人人色性网| 五月丁六月香av| 婷婷综合激情五月综合| 五月深爱网| 骚。com| 色五月婷婷九月| 婷婷狠狠操| 激情性爱五月天| 五月天色丁香| 亚洲日韩乱码一区二区三区四区| av一级棒av| 婷婷丁香五月社区亚洲| 亚洲四色五月| 九洲一级A片| 免费九九热| 激情五月无码| a久久免费视频| 五月婷婷啪啪综合网| 26UUU欧美激情一区二区| 丁香五月婷婷啪啪啪| 日韩婷婷| 五月丁香亭亭激情操逼网| 日韩欧美性爱| 97人凄人人操人人爽| 五月丁欧美| 九九草热在线观看| 欧美25p| 色婷| 亚洲V国产V欧美V久久久久久| 婷婷色色网站| 六月婷基地| 婷婷色色狠狠| www.开心激情| 午夜成人AV在线| 99热精品在线| 97人妻碰碰碰碰碰久久久久久| 久久丝袜婷婷| 蜜桃婷婷丁香五月天狠狠久久综合| 99爱精品视频| 婷婷99狠狠躁天天躁中| 亚洲精品99| 中文字幕精品推荐免费在线观| 国产操B视频| 婷婷5月天av| 丁香五月六月综合欧美| 五月花激情| 99久久婷婷国产综合精品电影| 狠狠色丁香久久| 九九视频这里是精品五月| 99色色色色| 精品人妻一区| 狠狠色丁香久久综合婷婷亚洲成人福利 | 国产精品电影网| 天天免费成年人视频| 日本色狠狠| 欧美99热| 成人在线视频一区| 五月天色婷伊人| 日本色色色| 中文字幕在线免费观看视频| 99热一本| 开心亚洲久久开心| 99超级碰碰| 五月丁久久| 婷婷五月天堂| 久久小片| 99这里只有精品| 九九99热久久精品66中文字幕| 婷婷五月天国产手机在线视频观看| 婷婷深爱五月| av国产精品| 五月丁香激情四射综合| 久99热| 天天色播| 成人丁香色| 亚洲丁香五月| 99国产精品久久久久久久久久久| 五月婷婷婷综合网| 丁香激情婷婷网| 婷婷久久五月| AA久久| 亚洲成人在线五月天| 99爱视频| 9l视频自拍9l九色成人| 人人操AV| 丁香狠狠色婷婷久久无码视频 | 中文字幕成人| 久艹伊| 热99精品视频| 五月丁香久久| 啪啪啪大香蕉| 蜜臀av粉嫩av懂色av| www.久99| 这里只有精品视频看看| 亚洲中文乱字字幕在线永久| 啪啪黄页网| 五月天婷婷婷| 激情综合视频| 日日操,日日爽| 99性色| 99操逼视频| 五月婷婷,狠狠操| 婷婷五月在线| 操逼棍操逼| 北条麻妃九九九国产精品视频| 五月婷婷新网站| 人人爱操| 日本一道久久| 五月丁香久久网| 97色在线观看视频| 久久怡红院| 五月丁香最新| 五月婷激情| 97人人操com| 国产色色色色| 99精品丰满| 综合激情深爱| www.婷婷久久五月天| 天天碰天天插天天操| 国产又色又爽又黄又免费| 日本本土色网第一区| 日韩1区2区| 婷婷激情肏屄网| 噜噜视频| 色色99色色| 99热在线播放| 婷婷五月天,影院| 日日影院 | 五月天色婷婷小说| 成人婷婷色综合| 射久久丁香五月| 五六月婷婷久久| 99爱视频在线观看这里只有精品| 色婷婷色五月综合| 色综合五月| 五月天天堂久久| 超碰人人在线| 色五月婷婷激情综合网| 色激情五月天| 国产精品久久久60086| 90色免费视频| 激情五月天影院| 99久久玖玖| 99久久婷婷国产综合| 天天开心天天色| 99精品在线观看| 蜜乳A√| 久久五月热| 激情五月天色播| 97操在线视频| 伊人久久婷婷| 婷激情五月| 玖玖爱导航| 欧洲不卡视频| 这里只精品| 九九九九九九热| 性爱视频久久| 成人AV在线电影| 欧美性色A片免费免费观看的| 人人舔天天| 久久一品区| 噜噜视频| 婷婷伊人五月| 激情五月色综合网| 婷婷五月婷婷| 第一区久久网站| 大香蕉欧美在线| 五月婷婷之综合激情| 2020夜夜操天天爽| 亚洲AV电影美洲AV电影| 九九色婷婷| 狠狠狠人妻| 丁香花操逼| 思思久久99| 九九热精品视频九九| 97色啪| 99色在线视频| 九九九九这里只有精品| 色五月成人| 婷婷五月在线影院| 991精品在线视频| 欧美综合激情五月丁香| 青青草Avb在线| 丁香五月天激情综合| 婷婷激情五月天在线| 激情综合九月| 香蕉婷婷五月| 草草操操| 丁香五月天啪啪激情综和网| 97影院一级片| av在线播放网站| AV在线观看网站| 99久久成人| 久久久五月五丁香| 香蕉影院色| 一级黄色影片| 99热这里有精力| 美女va| 在线99精品| 国产成人精品123区免费视频 | 婷婷丁香91| 国产精产国品一二三在观看| 狠狠的日| 第四色婷婷色五月| 99ri在线| 六月激情网| 欧美成人一区二区三区在线视频| 久久综合丁香| 蜜乳中文字| 激情五月伊人婷婷| 丁香五月色网| 久久se 综合网| 99性色| 久久久久久久人妻| 婷婷爱婷婷| 五月花综合网| 97干97色| 婷婷激情图片| 天天爽天天透天天爱| 国产超碰在线| 激情五月丁香六月综合AVXXXX| 免费三级黄色| 夜夜撸日日操| 综合99综合久久久久久久| 五月天六月婷婷电影| 激情99热| www超碰| 2015超碰| 激情五月天福利| 国产在线aaa片一区二区99| 色啪网| 六月丁丁香| 色色哒五月婷婷六月丁香| 五月婷婷六月丁香激情综合网| 色激情综合| 婷婷丁香成人五月天| www.夜夜爱.com| 碰97 久| 精品亚洲国产成人A片在线鸭王| 97福利视频| 日本欧美国产| 欧美va在线观看| 婷婷色爱| 色噜噜婷婷| 综合色综合| 五月丁香婷中文字幕 | 五月婷婷影| 超碰AV成人| 九九99九九精品视频| 9 7总站超级碰免费视频| 欧美三级巜人妻互换| 大香蕉九九| 丁香五月激情网| 涩综合婷婷| 国产午夜一区二区三区| 色欲久久综合| 婷婷午夜精品久久久| 日本久久精品18| 99热| 国产激情av| 99九九99九九九视频精彩| 色爱综合网| 精品99在线观看| 成人免费高清在线播放| 亚洲综合色网| 久久婷婷丁香| 999婷婷综合| 91天天操天天干天天射| 成人视频一区| 26UUU欧美| 婷婷五月激情中文字幕| 996er热| 99热| 国产精品久久久久久久久久| 日本人妻伦在线中文字幕| 超碰免费成人网站| 免费91久久精品| 久久五月天丁香花| 亭亭玉月丁香| 操操天堂| 99爱视频精品在线观看| 天天噜天天爱| 亚洲色色精品| 99re这里| 99久超碰| 天天操天天曰| 亚洲亚洲人成综合网络| 玖玖色综合色| 婷婷五月a| 97在线/亚洲| 九九成人精品免费视频| 五月丁香啪啪激情| 五月丁香花免费视频| 色婷五月天激情| 综合网啪| 色久综合| 日韩在线观看网址| 综合日本婷婷| 婷婷激情九月| 99r久久这里只有精品| 天天 青草 丝袜制服 在线| 婷婷激情社区| 久久久99久久| 国产69久久久欧美黑人A片| 色www99| 99日精品视频| 97亚洲色 torrent magnet| 伊人六月无码视频| 99爱在线观看视频| 97碰在线| 国产精品99久久久久久久女警| 超级碰碰碰久久网站| 黄色激情久久| 最新激情五月天| 深爱五月激情| 九九热精品视频| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 色噜噜狠狠色综合AV兰草影视| 色丁香在线视频| www.夜夜操.com| 天天肏夜夜肏| 91碰操| 掩去也综合五月视频| 天天综合网亚洲综合网| 五月丁香好婷婷A片网| 图片区 小说区 区 亚洲五月| 狠狠色婷婷丁香五月| 超碰精品在线| 四月婷婷丁香| 欧美色色色色色| 91高潮喷水久久久久久久久 | 五月婷婷天| 婷婷六月丁香五月图区| 丁香五月中文字幕| 婷婷五月激情欧美大胆视频| AA久久| 激情AV网| 激情九月婷婷| 夜丁香五月婷婷| 夜夜爱网站| 人人干人人操外国| 六月色婷婷欧美| 日熟女| 五月婷久久久久综合| 精品激情| 五月婷婷六月丁香色| 久久久久9999| 激情图片99| 天天透天天摸天天舔| 婷婷色五月激情| 五月天堂六月丁香亚州中文字幕久久| 天天色天天搡| 欧美成人精品A片免费一区99| 四LLL少妇BBBB槡BBBB| 99在线免费视频| 99成人无码| 色情婷婷五月天| 超级碰碰碰碰视频| 色五月丁香在线| 五月丁香六月激情综合| 色婷六月| 丁香五月色欲| 免费观看欧美成人AA片爱我多深| 色色色国产| 天天艹夜夜艹| 果冻传媒A片一二三区| 99热这是里只有精品| 熟女激情网| 亚洲AV另类| 日日肏夜夜干| 秋霞免费视频| 婷婷99| 丁香九九九九| 狠狠草网| 婷婷五月深爱五月| 国产婷婷色综合AV蜜臀AV | 五月婷婷激情综合| www.99日本| 天天射色五月天| 五月天婷婷视频30| 亚洲国产精品二二三三区| 亚洲Va成人| 五月婷婷影院| 久久伦乱| 可以免费观看的AV| 国产色色色色色| 五月天黄色激情小说| 无码人妻丰满熟妇奶水区码| 六月丁香视频网站| www.minyis.com【JT】实力收量可预付QQ2101460746 | 日本三级大片| 91久久精品无码一区二区三区| 另类激情首页| 久久女人九九| AV五月婷婷露脸| 五月丁香婷婷伊人日韩| 丁香五月天激情综合网| 免费无码毛片一区二区A片| 成人色色综合| 色色99| 五月婷婷成人网首页| 97人人干| 五月人人丁香婷婷五月人人丁香| 五月丁香成人网| ay2区| 91一起操| 婷婷五月天Av| 99国产精品久久久久久久久久久| 婷婷五月丁香五月天| 2050人人操免费工开爱| 六月婷婷开心| 久热超碰| 日韩啊啊啊| 色五月xxx| 香蕉AV福利精品导航| www婷婷亚洲| 欧美顶级少妇做爰HD| www。五月天。com| 婷婷色色综合| 开心婷婷五月中文字幕组| 97偷拍对白视频| www.婷婷五月| 91精品婷婷国产综合| 婷婷五月香蕉| 九九黄色网| 婷婷大香蕉| 五月天激情AAAA| 六月丁香AV| 久久狠狠干| 二色av| 99爱爱| 丁香五月婷婷基地| renrencaoav| 成人AV片播放| 丁香婷婷六月| 天天摸天天肏| 超碰成人免费| 天天干天天操天天上| 夜色.cnm| 日本欧美国产| 華人性愛AV在線| 影音先锋91在线资源站| 五月丁香在线婷婷美女| 久热婷婷在线视频| 九九五月天| 色综合xx| 亚洲av成人一区二区电影在线| 婷婷五月色惰| 五月天婷婷激情网| 丰满少妇乱A片无码| 天天天天天日| 色丁香婷婷| 欧美电影在线观看| 停停五月丁香| 五月停亭六月,六月停亭的英语 | 97香蕉久久超级碰碰高清版 | 激情五月天婷婷免费观看| 国产伦亲子伦亲子视频观看| 丁香五月激情啪啪| 9久久婷婷国产综合精品性色| 狼人久草| 婷婷丁香五月高清| AV在线观看网站| 青草视频在线播放| 五月天成人综合| 五月丁香色婷婷婷基地| 大香蕉福利导航| 色婷婷www| 先锋资源 996| 色九亚洲| 少妇人妻丰满做爰XXX| A久久| 色五月丁香总合网| 亚洲成人综合网在线免费观看| 色婷婷欧美| 色婷婷丁香AV综合| 玖玖午夜视频| 强辱丰满人妻HD中文字幕| 婷婷五月综合体验看| 天天色天天干天天插| 激情五月综合第一页| 欧美性生交A片免费看|