日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

云開發(fā)圖書借閱小程序:事務、庫存并發(fā)與冷啟動優(yōu)化

云開發(fā)圖書借閱小程序:事務、庫存并發(fā)與冷啟動優(yōu)化 1. 從零搭一套圖書借閱小程序先想清楚云開發(fā)能扛住什么做校園或社區(qū)圖書借閱這類小程序最大的誤區(qū)就是一上來就搞 Spring Boot MySQL 服務器那一套。我?guī)н^幾個類似的項目真正卡住進度的從來不是業(yè)務邏輯有多復雜——借書還書本身簡單得很——而是沒人愿意長期維護一臺服務器、沒人愿意去折騰域名和證書、更沒人愿意在半夜被告警電話叫醒說數(shù)據(jù)庫連不上了。云開發(fā)這條路子最適合的就是這種場景三五個人、預算接近于零、需求清晰、用戶量可控。圖書借閱小程序本質(zhì)上就是一批書、一群人、一堆借還記錄數(shù)據(jù)量上萬條就到頭了讀多寫少幾乎沒有高并發(fā)壓力這正是 Serverless 最舒服的區(qū)間。先把這套系統(tǒng)要干的事說清楚管理員把書錄進去書名、作者、ISBN、封面、館藏位置、總冊數(shù)讀者掃碼或搜索找到書點借閱系統(tǒng)扣減可借庫存并生成一條借閱記錄到期前提醒還書時核銷記錄、回滾庫存超期了標紅提示。聽著像玩具項目但真做起來庫存并發(fā)、權限邊界、時間時區(qū)、列表性能這四個坑一個都不會少。這篇文章就是把我踩過的這些坑按順序攤開講數(shù)據(jù)集合怎么設計才不會后期改表改到崩潰、借書那一下為什么必須上事務、云函數(shù)超時到底是哪行代碼拖的、還有一大堆權限報錯和冷啟動的排查思路。適合剛接觸云開發(fā)、想拿一個完整項目練手的朋友也適合已經(jīng)寫了一版但總在邊界情況上翻車的人。我不打算把這篇寫成 API 手冊文檔上有的東西抄一遍沒意義。下面全是為什么這么設計和當時出了什么問題的記錄代碼片段你可以直接拿去改。2. 方案選型云開發(fā)和自建后端到底差在哪2.1 把成本、運維和擴展性攤在一張表上看選型這事兒最怕拍腦袋。我一般會把幾個關鍵維度列出來橫向對比避免做到一半發(fā)現(xiàn)路走錯了。圖書借閱系統(tǒng)的特點是用戶規(guī)模有限一個學校幾千人、一個社區(qū)幾百人、業(yè)務邏輯集中在寫操作、沒有復雜的實時通信需求、也沒有大數(shù)據(jù)分析要求。基于這幾個前提我把兩條路線擺在一起維度自建后端服務器 數(shù)據(jù)庫云開發(fā)云函數(shù) 云數(shù)據(jù)庫 云存儲初期投入需要服務器、數(shù)據(jù)庫、域名、證書配置周期 3 到 7 天開通環(huán)境即用半小時能跑通第一個接口運維成本系統(tǒng)補丁、備份、監(jiān)控、擴容全靠自己平臺托管基本不用管成本模型固定月費即使沒人用也在燒錢按調(diào)用量計費低峰期費用趨近于零冷啟動無有明顯冷啟動延遲幾百毫秒到兩秒復雜查詢自由度高SQL 想怎么寫怎么寫聚合能力夠用但有邊界跨集合聯(lián)查需要手工拼單次執(zhí)行時長自己控制云函數(shù)有明確超時上限默認較短可調(diào)但有天花板遷移成本低數(shù)據(jù)在自己手里需要提前設計導出通道避免被綁死結論很清楚這類項目不需要為了顯得專業(yè)去自建后端。真正需要警惕的是第二條路線的隱性約束——超時時間、單次返回條數(shù)、事務支持范圍這三樣如果一開始沒摸清楚后面改起來會很痛。2.2 三個必須先量清楚的硬約束第一個是單次查詢返回條數(shù)。小程序端直接查數(shù)據(jù)庫默認一次只給 20 條云函數(shù)里查默認 100 條。很多人寫完列表頁發(fā)現(xiàn)怎么只有 20 本書以為是數(shù)據(jù)沒插進去其實是被截斷了。做書籍列表必須老老實實分頁別想著一次拉全量回來在前端過濾。第二個是云函數(shù)執(zhí)行超時。默認值比較短后臺可以調(diào)高但不是無限的。圖書借閱里最容易超時的場景是批量導入書籍和批量到期掃描。前者一次性插幾百條逐條add必超時后者遍歷所有借閱記錄逐條判斷數(shù)據(jù)一多就掛。解決辦法后面會講批量導入走分批提交到期掃描走定時觸發(fā)器加最小化掃描范圍。第三個是事務的適用范圍。借書這個動作要同時做兩件事扣庫存、寫記錄。這兩步必須原子完成否則會出現(xiàn)庫存扣了但記錄沒寫、或者兩條借閱記錄搶到同一本書的情況。云開發(fā)的數(shù)據(jù)庫事務支持在云函數(shù)里使用但有前提所有操作必須在同一個事務對象上執(zhí)行且事務內(nèi)有操作數(shù)量和執(zhí)行時間的限制。所以借書邏輯不能拆成幾個獨立云函數(shù)串行調(diào)用必須一口氣做完。注意事務不是萬能的。它解決的是同一時刻兩個人搶最后一本書的問題解決不了用戶網(wǎng)絡不好重復點擊提交的問題。后者要在前端做防抖加冪等鍵兩碼事。2.3 需求邊界先畫死別讓功能膨脹拖垮進度我見過太多這類項目死在順便加個功能上。第一版只做四件事書的增刪改查、借、還、逾期提醒。就這四個別貪。會員積分、書評、預約排隊、掃碼入庫、推薦算法全部放到二期。為什么因為圖書借閱的核心難點在數(shù)據(jù)一致性和權限控制功能一多權限規(guī)則就復雜規(guī)則一復雜就容易出現(xiàn)某個角色的用戶能改別人記錄這類安全事故而這種問題往往上線之后才被發(fā)現(xiàn)。還有個現(xiàn)實問題如果這個小程序涉及押金、收費借閱類目和資質(zhì)這塊要提前確認清楚別代碼寫完卡在審核上。我一般建議第一版做成純公益的館內(nèi)借閱完全不碰資金流把業(yè)務跑通再說。3. 數(shù)據(jù)模型設計把借閱規(guī)則釘進集合結構里3.1 五個核心集合的字段規(guī)劃數(shù)據(jù)模型這一步做扎實后面能省掉一半的麻煩。我最終的集合設計是這樣字段名統(tǒng)一用下劃線風格避免前后端拼寫不一致集合名用途關鍵字段books書籍主數(shù)據(jù)_id、title、author、isbn、cover_file_id、category、total_copies、available_copies、location、status、create_timeborrow_records借閱流水_id、openid、book_id、book_snapshot、borrow_time、due_time、return_time、status、overdue_daysusers讀者信息_id、openid、nickname、student_no、max_borrow、current_borrow、statuscategories分類字典_id、name、sort、parent_idnotices公告與提醒_id、title、content、type、publish_time幾個設計決定值得單獨說一下。庫存用兩個字段而不是一個。total_copies表示館藏總量available_copies表示當前可借數(shù)量。為什么不只存可借數(shù)因為管理員改館藏的時候你需要知道原始總量才能算出正確的可借數(shù)。比如總量從 5 改成 8可借數(shù)應該 3而不是直接變成 8。只存一個字段這個計算就沒法做了。用戶身上冗余一個 current_borrow 計數(shù)。嚴格來說這個數(shù)可以從借閱記錄里統(tǒng)計出來但每次借書都去count一遍記錄表既慢又容易在并發(fā)下算錯。冗余一個計數(shù)字段配合事務一起更新讀取時直接拿速度快得多。代價是要保證這個字段永遠和實際記錄數(shù)一致——這就是后面要講的還書時一定要回滾。status 一律用數(shù)字枚舉不用布爾值。借閱記錄的狀態(tài)至少有借出中、已歸還、已逾期、已丟失。用is_returned: true/false這種布爾設計將來加丟失狀態(tài)就得改全表。用status: 1/2/3/4加一份常量映射擴展起來毫無壓力。3.2 借閱記錄為什么要存一本書的快照這是我在第二個項目里才想明白的事。最開始 borrow_records 只存book_id展示的時候再去 books 集合里聯(lián)查書名和封面。結果出了個問題管理員把一本書下架刪除了歷史借閱記錄全部變成未知書籍讀者查自己的借閱歷史一臉懵。解決辦法是在借閱記錄里冗余一份快照book_snapshot: { title, author, cover_file_id, isbn }。借出那一刻把書名作者封面拷一份進去之后書籍怎么改、怎么刪歷史記錄都完整可讀。多占一點存儲空間換來的是數(shù)據(jù)的不可變性——這個交換在借閱系統(tǒng)里絕對劃算。同樣的思路也適用于用戶信息。借閱記錄里存openid就夠了展示昵稱時再查因為昵稱會變。但如果是罰款單、借書憑證這類憑證性數(shù)據(jù)用戶信息也得存快照。區(qū)分標準很簡單這條數(shù)據(jù)是當前狀態(tài)的引用還是當時事實的記錄。前者存 ID后者存快照。3.3 數(shù)據(jù)庫權限規(guī)則最容易翻車的地方云開發(fā)的數(shù)據(jù)庫權限有四檔僅創(chuàng)建者可讀寫、所有用戶可讀僅創(chuàng)建者可寫、僅管理端可讀寫、所有用戶可讀寫。選錯一檔要么數(shù)據(jù)泄露要么功能直接不工作。圖書借閱系統(tǒng)的正確配置是books所有用戶可讀僅管理端可寫。普通讀者能瀏覽書目但不能改庫存。borrow_records僅創(chuàng)建者可讀寫。讀者只能看自己的借閱記錄看不到別人的。管理員的操作走云函數(shù)云函數(shù)有管理員權限不受這條規(guī)則限制。users僅創(chuàng)建者可讀寫。自己的資料自己改。categories、notices所有用戶可讀僅管理端可寫。提示小程序端直接寫數(shù)據(jù)庫用的是創(chuàng)建者身份也就是 openid。一旦某條記錄的_openid字段和你當前用戶對不上寫操作就會失敗報的錯還不一定直觀。所以凡是涉及修改別人的數(shù)據(jù)——比如管理員幫讀者辦理還書——一律走云函數(shù)別在小程序端硬寫。這里有個特別隱蔽的坑云函數(shù)里創(chuàng)建的記錄_openid字段是空的。因為云函數(shù)用的是管理員身份不是用戶身份。如果你在云函數(shù)里插入借閱記錄然后指望小程序端按僅創(chuàng)建者可讀的規(guī)則讀出來會發(fā)現(xiàn)讀不到。解決辦法是在云函數(shù)里手動把 openid 寫進一個自定義字段比如openid查詢時用自己的字段過濾而不是依賴_openid的自動權限?;蛘吒纱喟呀栝営涗浀淖x取也放到云函數(shù)里做。我傾向后者邏輯集中權限清晰。4. 核心業(yè)務實現(xiàn)借書那一下到底發(fā)生了什么4.1 庫存并發(fā)是這類系統(tǒng)的頭號殺手把所有邏輯攤開看借書這個動作包含四個判斷和兩個寫入這本書存在且狀態(tài)正常available_copies 0該用戶當前借閱數(shù)未超過上限該用戶沒有已經(jīng)借了同一本書未還寫入一條借閱記錄available_copies減 1用戶current_borrow加 1如果不用事務最典型的故障是兩個人同時點借最后一本書兩個請求都查到了available_copies 1都判斷通過然后都執(zhí)行扣減最后庫存變成 -1兩條記錄都成功。這在測試階段幾乎發(fā)現(xiàn)不了上線第一天就爆。正確的寫法是把整個流程放進云函數(shù)用事務包住。下面是我實際用的結構省略了部分校驗// cloudfunctions/borrowBook/index.js const cloud require(wx-server-sdk) cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) const db cloud.database() const _ db.command exports.main async (event) { const { bookId } event const { OPENID } cloud.getWXContext() try { return await db.runTransaction(async transaction { // 1. 讀用戶加鎖式讀取 const userRes await transaction.collection(users) .where({ openid: OPENID }).get() if (!userRes.data.length) { throw new Error(USER_NOT_FOUND) } const user userRes.data[0] if (user.status ! 1) throw new Error(USER_DISABLED) if (user.current_borrow user.max_borrow) throw new Error(BORROW_LIMIT) // 2. 讀書籍 const bookRes await transaction.collection(books).doc(bookId).get() const book bookRes.data if (!book || book.status ! 1) throw new Error(BOOK_NOT_AVAILABLE) if (book.available_copies 0) throw new Error(NO_COPY_LEFT) // 3. 查重同一本書不能借兩次 const dupRes await transaction.collection(borrow_records) .where({ openid: OPENID, book_id: bookId, status: 1 }).get() if (dupRes.data.length) throw new Error(ALREADY_BORROWED) // 4. 寫記錄快照在這里生成 const now new Date() const due new Date(now.getTime() 30 * 24 * 3600 * 1000) await transaction.collection(borrow_records).add({ data: { openid: OPENID, book_id: bookId, book_snapshot: { title: book.title, author: book.author, cover_file_id: book.cover_file_id || }, borrow_time: now, due_time: due, return_time: null, status: 1, overdue_days: 0 } }) // 5. 扣庫存 加計數(shù) await transaction.collection(books).doc(bookId).update({ data: { available_copies: _.inc(-1) } }) await transaction.collection(users).doc(user._id).update({ data: { current_borrow: _.inc(1) } }) return { code: 0, dueTime: due } }) } catch (err) { return { code: -1, msg: err.message } } }幾個細節(jié)必須說清楚。_.inc(-1)這個原子操作符是關鍵。它讓減一在數(shù)據(jù)庫層面完成而不是先讀出來再寫回去。即使事務沒鎖住inc本身也不會丟更新。判斷重復借閱時我查的是status 1 的記錄也就是未歸還的。如果用戶借了還了再借是允許的所以不能簡單按 book_id 查。所有校驗必須在事務內(nèi)完成。把available_copies 0的判斷放到事務外面事務就白用了因為讀的時候是舊值。錯誤碼用字符串而不是中文提示。前端拿到NO_COPY_LEFT再映射成這本書已經(jīng)全部借出了方便做多語言和統(tǒng)一文案也避免云函數(shù)返回中文在不同環(huán)境下編碼出問題。4.2 還書流程里的兩個易錯點還書看起來比借書簡單實際上有兩個坑。第一個坑是重復還書。用戶連點兩次、或者管理員手誤點了兩下庫存會被加兩次。所以還書的第一步必須是檢查記錄當前狀態(tài)只有status 1才允許歸還歸還后立刻置為 2。這個檢查和更新必須在事務里否則兩次并發(fā)請求都能通過狀態(tài)檢查。第二個坑是逾期天數(shù)怎么算。這里我踩過最蠢的一次坑云函數(shù)運行環(huán)境的默認時間是 UTCnew Date()拿到的比北京時間晚 8 小時。如果你直接用new Date()和due_time相減算天數(shù)晚上八點以后的數(shù)據(jù)會全部錯一天。正確做法是用時間戳算差值然后按天向下取整const MS_PER_DAY 24 * 3600 * 1000 const diff Date.now() - new Date(record.due_time).getTime() const overdueDays diff 0 ? Math.floor(diff / MS_PER_DAY) : 0注意是Math.floor而不是Math.ceil。超期 1 小時算 0 天人性化超期 25 小時算 1 天。如果用ceil超期一分鐘就顯示已逾期 1 天用戶會覺得系統(tǒng)在訛他。還有一個細節(jié)due_time存進去的時候是 Date 對象取出來在云函數(shù)里拿到的是 Date在小程序端拿到的是字符串。兩邊的比較方式不一樣別在小程序端直接拿字符串做減法會得到 NaN。前端只負責展示計算全部放云函數(shù)。4.3 定時觸發(fā)器做逾期掃描的正確姿勢逾期狀態(tài)有兩種維護方式一種是查的時候實時算一種是用定時任務提前標好。我建議兩個都做定時任務每天凌晨跑一次把已經(jīng)逾期的記錄 status 改成 3 并寫入 overdue_days用戶查詢時再根據(jù) due_time 實時兜底算一遍。原因是定時任務可能因為各種原因沒跑成功實時計算保證展示永遠正確。定時觸發(fā)器的配置文件長這樣{ triggers: [ { name: dailyOverdueScan, type: timer, config: 0 0 2 * * * * } ] }這個 cron 表達式是七位的秒 分 時 日 月 周 年0 0 2 * * * *表示每天凌晨兩點。很多人寫六位表達式少一位秒配置不生效還不報錯查半天。掃描邏輯上有個優(yōu)化點不要where({ status: 1 })全表拉出來逐條判斷數(shù)據(jù)量上千條就可能超時。正確做法是讓數(shù)據(jù)庫幫你過濾const _ db.command const now new Date() let hasMore true let lastId null const BATCH 100 while (hasMore) { const query { status: 1, due_time: _.lt(now) } if (lastId) query._id _.gt(lastId) const res await db.collection(borrow_records) .where(query).orderBy(_id, asc).limit(BATCH).get() if (!res.data.length) break // 逐條更新狀態(tài)這里用 Promise.all 但控制并發(fā) await Promise.all(res.data.map(rec { const days Math.floor((now.getTime() - new Date(rec.due_time).getTime()) / MS_PER_DAY) return db.collection(borrow_records).doc(rec._id).update({ data: { status: 3, overdue_days: days } }) })) lastId res.data[res.data.length - 1]._id hasMore res.data.length BATCH }用_id做游標分頁而不是skip這是數(shù)據(jù)量上來之后必須要改的一點。skip(10000)意味著數(shù)據(jù)庫要掃描并丟棄前一萬條越往后越慢最后直接超時。游標分頁每次都從上次結束的位置開始性能是平的。注意Promise.all一次并發(fā) 100 個數(shù)據(jù)庫寫操作在云函數(shù)里可能會被打限流。實測下來建議把 BATCH 降到 20 到 50 之間或者用分批串行的方式慢一點但穩(wěn)。5. 前端體驗與性能那些讓人抓狂的小細節(jié)5.1 列表分頁和搜索的取舍書籍列表是整個小程序里訪問最頻繁的頁面它的性能直接決定用戶第一印象。分頁這塊小程序端用skip limit就行因為列表頁用戶最多翻個十幾頁skip的累積開銷可以接受。但一定要做觸底加載而不是頁碼跳轉符合小程序的操作習慣。加載狀態(tài)要有骨架屏或者 loading 占位否則用戶會以為卡死了。搜索是最容易做錯的。很多人上來就寫db.collection(books).where({ title: db.RegExp({ regexp: keyword, options: i }) }).get()這個寫法在數(shù)據(jù)量小的時候沒問題但正則查詢用不上索引全表掃描幾百條還行幾千條就明顯卡。更要命的是用戶輸入的關鍵詞如果帶特殊字符正則可能直接報錯。我的處理策略是分兩層第一層書名、作者前綴匹配用db.RegExp({ regexp: ^ escapeRegExp(keyword) })前綴正則是可以用上索引的。用戶輸三體能搜到《三體》《三體 II》。第二層如果第一層結果為空再降級做全文模糊匹配同時限制返回 20 條。另外一定要對用戶輸入做轉義處理把.*()[]這些正則元字符替換掉否則用戶輸個(就白屏了。function escapeRegExp(str) { return str.replace(/[.*?^${}()|[\]\\]/g, \\$) }如果書籍量真的很大比如幾萬條正則在任何位置匹配都不合適這時候要么上云開發(fā)的聚合搜索要么在錄入書籍時預生成一個拼音首字母字段讓用戶能按拼音首字母快速定位。這個優(yōu)化我在一個兩千多本書的項目里做過搜索響應從兩秒多降到兩百毫秒以內(nèi)。5.2 封面圖片云存儲的存儲和加載封面圖是這類小程序里最占體積的東西。常見的錯誤做法是把圖片轉成 base64 存進數(shù)據(jù)庫幾百本書下來數(shù)據(jù)庫直接告急查詢還慢得要命。正確做法是圖片上傳到云存儲數(shù)據(jù)庫里只存fileID。展示的時候用cloud://開頭的 fileID小程序端的image組件可以直接識別不需要先換成臨時鏈接。如果你需要在 web 端或者分享卡片里用才需要調(diào)用getTempFileURL換鏈接而且臨時鏈接有有效期別緩存太久。上傳前必須壓縮。我用wx.compressImage質(zhì)量設到 60 到 70 之間寬度壓到 750px 以內(nèi)一本書的封面從兩三兆能壓到一百多 KB。這個操作在管理端做讀者端永遠拿到的都是壓好的圖。還有個容易忽略的點刪除書籍時記得刪云存儲里的文件。云開發(fā)的數(shù)據(jù)庫和云存儲是兩個獨立系統(tǒng)刪記錄不會自動刪文件。時間一長云存儲里堆一堆孤兒文件既占空間又占額度。我的做法是在刪除云函數(shù)的最后加一步cloud.deleteFile失敗也不影響主流程但日志要記下來。5.3 交互細節(jié)上的幾個加分項借書按鈕的防重復點擊最簡單有效的辦法是點擊后立刻setData({ submitting: true })把按鈕置灰請求返回再恢復。不要指望用戶手不抖。掃碼借書這個功能值得做。給每本書貼一個碼內(nèi)容是書籍的_id或者 ISBN用戶掃碼直接跳詳情頁。用wx.scanCode一行代碼的事體驗提升非常明顯尤其對老年讀者友好。借閱列表的排序默認按借閱時間倒序但要把已逾期的置頂。實現(xiàn)上有兩種方式一種是數(shù)據(jù)庫排序字段設計一種是前端分組。我傾向前端分組把數(shù)據(jù)分成逾期中和其他兩個數(shù)組分別渲染邏輯清晰也不影響分頁。6. 排錯實錄那些報錯信息背后的真實原因6.1 高頻報錯速查表下面這些都是我在實際項目里真實遇到并解決過的問題按出現(xiàn)頻率排序報錯或現(xiàn)象真實原因處理方式errCode: -502005 database collection not exists集合沒創(chuàng)建或者云函數(shù)連的環(huán)境不對在控制臺手動建集合檢查cloud.init的環(huán)境 IDpermission denied權限規(guī)則和操作身份不匹配寫操作走云函數(shù)或用自定義 openid 字段過濾云函數(shù)返回Timeout循環(huán)里逐條 await或全表掃描改批量操作加_id游標分頁縮小 where 范圍首次調(diào)用特別慢后面正常冷啟動提高內(nèi)存配置關鍵路徑減少依賴包體積庫存出現(xiàn)負數(shù)沒用事務或事務內(nèi)校驗不全全部校驗搬進事務用_.inc原子操作列表只顯示 20 條小程序端查詢默認限制顯式分頁或用云函數(shù)查默認 100 條借閱記錄查不到_openid云函數(shù)插入的記錄不帶 openid手動寫入openid字段查詢時用它過濾逾期天數(shù)差一天云函數(shù) UTC 時區(qū)用時間戳算差值不用字符串比較cloud.callFunction:fail云函數(shù)沒上傳部署或函數(shù)名拼錯右鍵上傳并部署檢查名字大小寫圖片不顯示存的是 http 鏈接或未壓縮的超大圖統(tǒng)一存 fileID上傳前壓縮6.2 冷啟動不是 bug但必須緩解冷啟動這個事很多人第一次遇到會以為是代碼有問題?,F(xiàn)象很典型早上第一個用戶打開小程序加載首頁轉圈兩秒多之后就飛快。原因是云函數(shù)實例被回收了重新拉起需要初始化時間。緩解手段有幾個按性價比排序減小依賴體積。云函數(shù)目錄里的node_modules越大冷啟動越慢。我見過有人在云函數(shù)里裝了整個lodash和moment其實只用了一個函數(shù)。日期處理用原生Date就夠工具函數(shù)自己寫幾行包體積能從幾十兆降到幾兆。提高內(nèi)存配置。云開發(fā)后臺可以調(diào)云函數(shù)的內(nèi)存配置越高分配的 CPU 越強初始化也越快。這個幾乎不用改代碼調(diào)一下配置就有改善。拆分函數(shù)。一個巨型云函數(shù)處理所有邏輯初始化時要把所有依賴都加載一遍。拆成借書還書查書幾個小函數(shù)每個只加載自己需要的依賴單次冷啟動時間會短很多。前端做體驗兜底。首頁加載時先渲染本地緩存的書目列表wx.setStorageSync存一份同時發(fā)起請求拿到新數(shù)據(jù)再替換。用戶感知不到等待。6.3 上線前的自查清單我在每次交付前會過一遍這張單子能擋掉大部分線上事故所有涉及多表寫入的操作是否都在事務內(nèi)借書、還書、刪書這三個必須檢查。所有查詢是否都加了分頁有沒有哪個頁面在偷偷全表拉取數(shù)據(jù)庫權限規(guī)則是否逐條核對過特別是books的寫權限有沒有誤開給所有用戶。云存儲里有沒有孤兒文件建議寫個一次性腳本清理。定時觸發(fā)器是否真的跑起來了可以在函數(shù)里加一行日志觀察兩天的執(zhí)行記錄。所有new Date()的地方是否都用時間戳計算避免時區(qū)問題錯誤碼是否都有對應的用戶友好文案有沒有哪個分支會直接彈出undefined用戶連續(xù)點擊提交按鈕會不會產(chǎn)生重復數(shù)據(jù)冪等性檢查做了沒有7. 我在幾個項目里攢下的經(jīng)驗最后說點零碎的、文檔里不會寫的東西。別在云函數(shù)里做遞歸。有次我寫了個分類樹遞歸查詢本地測試沒問題線上數(shù)據(jù)一深就超時報錯信息還特別模糊。分類這種層級不深的數(shù)據(jù)一次性全查出來在前端組樹就行幾十條數(shù)據(jù)的內(nèi)存開銷可以忽略。數(shù)據(jù)庫索引早點建。云開發(fā)控制臺可以給字段建索引。borrow_records的openid、status、due_timebooks的title、category這幾個字段建上索引查詢速度差別是數(shù)量級的。索引這事不占多少工作量但一定要在上線前做完等數(shù)據(jù)多了再建建索引本身就要花很久。測試數(shù)據(jù)一定要造臟數(shù)據(jù)。我在測試階段永遠會插幾條這樣的記錄庫存為 0 的書、已經(jīng)被刪除的書但記錄還在、due_time 是去年的記錄、openid 為空的用戶。這些邊界數(shù)據(jù)能提前暴露 80% 的空指針和狀態(tài)判斷漏洞比寫一百個單元測試管用。給管理員留一個數(shù)據(jù)導出入口。哪怕第一版只是個簡單的導出借閱記錄為 CSV的功能。理由很現(xiàn)實一旦你想換方案、或者需要給上級交一份統(tǒng)計報表沒有導出通道會非常被動。這個功能實現(xiàn)起來不復雜云函數(shù)里拼好 CSV 字符串傳到云存儲返回一個下載鏈接就完事。日志要打但別亂打。云函數(shù)里console.log的內(nèi)容在控制臺能看但默認保留時間有限。關鍵路徑——借書成功、還書成功、事務失敗——打一行結構化日志包含 openid、book_id、錯誤碼。出問題時這幾行日志能省掉你半天排查時間。非關鍵路徑別打日志太多反而看不清。這套系統(tǒng)我從第一版到現(xiàn)在改了三輪最大的感受是云開發(fā)的天花板不在技術能力而在你有沒有把邊界情況想全。庫存并發(fā)、時區(qū)、權限、分頁、重復提交這五個點每一個都值得單獨寫一段代碼去防而它們恰恰是最容易被先跑通再說跳過的部分。等用戶量上來、數(shù)據(jù)變多這些跳過的坑會一個一個找回來。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
东北老熟女| 大香蕉在线免| 国产男女边吃边摸视频网站| 色色婷婷五月| 国产精品97超碰| 国产精品麻豆成人av| 91大学精品激情戏| 色原狠狠天天天| 国产传媒午夜理伦精品| 色欧洲97| 婷婷五月天伊人| 欧美,日韩综合久久| 天天欧美| 亚洲欧美校园| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场| 婷婷91| 东京太热男人的天堂久久久| 亚洲激情在线一区二区| 亚洲字幕一区二区| 日韩性爱小视频| 东京热,男人的天堂| 国产精品久久久久久久久久久久久久久久 | 久久一区二区加油站| 亚洲小电影免费涩涩成人在线高清| 日韩美一区| dy888午夜老子影视达达兔| 色婷婷基地| 欧美最婬乱婬爆婬牲视频| 999久久久精品国产| 曰韩无码777| 欧美日韩性爱无码| 亚洲激情在线| 丁香五月影院| 人妻碰碰碰碰碰碰| 久久久999网站| 9999免费精彩视频| 日韩在线观看中文字幕视频| 91粉嫩萝控精品福利网站_精品影音先锋国 | 日本天天干天天日一区| 香蕉免费一区二区三区不读| 五十路熟女工口 | 久久久久密臀视频| 欧美综合另类| 国产精品不卡一区二区电影| 久久夜黄色无码A级大片| 欧美偷拍区| 92性色国产午夜福利在线661| 97天天摸天天爽| 凹凸 69堂 在线播放| 丰满人妻-区二区三区免费看 | 性爱av在线免费观看| 国产AV超爽| 九九碰九九爱97超碰| 日本人人操人人操| 熟女啪啪视频| 青青草字幕AV| 国产AV线| 婷婷久月| 园内精品自拍视频在线播放| 成人免费不卡在线视频| 青青11操操操操操操操操| 亚洲欧美精品一区天堂久久 | 亚洲AV无码久久久国产精品| 亚洲国产精品久久久久久久久久| 中文字幕日产av人| 中字一区| 蜜臀99久久精品久久久懂爱| 91人妻素女| 五月婷丁香| 亚洲精品97在线| 久噜噜| 综合色久欲| 欧美亚洲图片| 手机在线视频国内精品| 99色在线视频| 超碰到97情色| 91精品国产91久久福利| 日本污ww视频网站| 欧美伦乱爱| 我爱操| 日韩三级在线观看网站| 大香蕉九九| 区一二区日韩亚洲乱码av电影| 91久久精品美女高潮喷水| 黑人猛交| 精品一区二区三区蜜桃臀赵总 | 欧美最婬乱婬爆婬性视频 | 欧美性天天影院| 亚洲一区二区三区婷婷| 强歼乱伦资源网| 天美国产精品| 操熟女91| 无码精品蜜桃一区二区三区ww| 日韩在线视频1234| 天天射天天色成人| 日本网色| 97久久国产亚洲精品超碰热| 日韩熟女操逼| 色女99一级片在线观看| 97干色| 欧美日韩第一页| 一本大道综合伊人精品热热| 无码久久国产| 日本不卡三级网在线播放| 一区超碰一区| 亚洲人妻中文高清| 中文字幕AV片| 在线观看AV片| 大乔未久88一区| 国产欧美日本亚洲精品 | 啊啊啊啊啊啊好多水| 日本精品高清一二区一本到| 丝袜综合| 狠狠婷婷亚洲中文综合久久| 亚洲综合春色| 国产性爱在线视频一区二区| 无码一区二区三区四区五区六区七区八区九区十区视频 | 狠狠操夜夜| 国产亚洲色婷婷99精品91| 黄片www视频免费| 亚洲天堂区| 中文字幕黄色一起草| 国产白嫩漂亮KTV在线| 91欧美长吊| 亚洲影院无码在线| 91av天美性媒精品视频| 日韩大香蕉| 色五月婷婷网| 日本123区操B视频| 亚洲综合在线高清| 婷婷探花久久精品一区| 色色毛片| 成人日韩欧美| 任你干在线视频| 国产三级资源在线观看| 黑人猛交| 夜夜草我| 99热伊人| 蜜桃午夜视频一区二区 | 黑丝自慰喷水网站| 婷婷三区| 久久久四区| 日本污ww视频网站| 嗯嗯啊啊的视频| 欧美性爱91| 人人污日韩一区二区| 欧美天天射| 99综合网| 精品99999| 97人肏| se..亚洲欧美| 久久天堂婷婷网| 超碰人妻久久| ,国产乱人伦精品一区二区三区| 97超碰公开| 夜夜影视四色| 久干网| 日韩精品在线视频在线观看| 午夜精品久久久久久久男人的天堂| 91超碰碰在线| 九月激情婷婷| 超碰97玖玖爱| 友优传媒精品在线一区二区| 国产亚洲精品第一最新| 久热99999| 中日韩熟女| 男人的天堂日韩| 国产亚洲色婷婷久久99精品91葵花宝典| 天天在线91| 精品人妻二区三区| 日本性感人妻91| 亚洲成人免费在线| 一区二区无码视频| 精品无码久久久久久久久果冻糖心| 精品熟女一区=区三区| 五十路六十路七十路熟婆| 综合久久9| 九九亚洲色在线观看| 欧美性爱在线无码| av天堂加勒比| 亚洲色图久久成人| 99热18这里只有精品| 天美传媒精品一区二区| 国产精品熟女丝袜一区二区| 超碰97人人乐| 久久精品六区| 99在线精品视频| 99久草| 清纯唯美激情四射| 99热精品青草在线| 不卡一区视频| 丁香五月激情综合国产| 呦女网站| 人人插人人摸人人| 超碰视97中文| 精品国产乱码久久久影院| av九九| 一本久道久久综合狠狠爱一密臀精 | 欧美美女视频| 四虎免费看黄| 强奸乱伦av电影| 极品色电影院| 99久久婷婷国产综合| 97亚洲自在精品在线观看| 婷婷综合激情| 99国产精品视频尤物| 亚洲不卡av在线| 欧美性生活男人的天堂| 60秒试看最爽10分钟网站| 国产精品毛片?v一区二区三区| www.高清无码诱惑一区.com| 欧美婷婷五月天| 日日夜夜免费| 啊啊啊啊好大好硬啊啊啊啊啊| 福利操逼| 妇女一区二区三区| 狠狠热这里都是精品| 人妻精品免费一二三区| 久久久久久久9最新免费视频观看| 超碰人人色| 久久久性| 理论久久婷婷网8| 顶级少妇BT天堂| 99久久精品无码一区二区| 黄人人操人人操| 精品欧美不卡在线播放| 亚洲综合贴图91| 97天天搞在线| 日本高清有码网址视频| 在线观看国产黄色| 国产最新小视频在线播放下载| 成人青青草原伊人| 久久国产视频专区一二三| 人妻中文字幕日韩电影| 色色毛片| 少妇综合| 操久久久久| 日逼97| 中文字幕一二三区| 婷婷色网| 丁香婷婷激情五月天无毒不卡| 欧美九9 9 9| av爱爱爱| 一本一道vs波多野结衣| 五月婷婷综合激情| 91亚洲精品青草| 91精品国产综合久久久蜜臀| 欧美黑人性猛交91| 熟女AV一区| 精品白丝一区| 少妇激情一区二区三区视频| 欧美色www亚洲国产阿娇要播| 自拍偷拍 高清无码| 日日夜夜干| 久久久久婷婷精品av电影| 最新亚洲黄色免费电影| http://qxhbdz.com| 麻豆黄站| av最新免费中文字幕| 天天透伊人| 婷婷人妻激情| www.色婷婷| 综合五月天| 亚洲成人网站在线观看| 天天躁夜夜躁狠狠躁AV| 黄色在线网站| 97美日韩视频| 一区二区激情国产熟女 | 亚洲综合另类小说色区亚洲成av人片在www| 国产中文字幕曰本毛片| 免费看污网址| 把腿张开老子CAO烂你| 17c嫩草51久久91嫩草| 色姑娘综合网| 激情婷婷综合久久| 天美国产三级传媒| 欧美色网络| 日本高清电影欧美色图| 久久久精精精| 嗯啊不要啊在线 | 欧美丝袜美女电影一二三四区| 成人免费看吃奶视频网站| 性生活无遮挡纯毛片在线看| 91人妻素女| 亚洲深夜福利| 国产夜夜艹| 中国乱伦一区二区| 日本一线产区和二线产区伦理片| 国产欧美日韩女同性恋ww喷水精品| 国产美女在线精品免费看| 人妻 欧美 中文| 久久99午夜精品一区人妻| 久久男人的天堂| 日韩人妻精品中文字幕| 婷婷综合五月天| 男人的天堂午夜av| 久草男人天堂| 国产女人高潮视频| 亚洲 欧美 手机在线观看| 青青草公开在线免费不卡视频| 成人三级片无码| 亚洲黄色电影| 久久伊人青青草| 无码国产精品久久久久| 呦呦影院| 91色交| 视频不卡中文字幕| 亚洲AV在线资源| 1000午夜黄色| 激情五月综合网| 97色在线观看| 婷婷五月天社区| 国产兽交视频在线播放| 亚洲中文电影| 国产精品国产拍高清AV| 超碰97亚洲区| 98人妻精品一区二区色欲| 免费看国产曰批40分钟怎么下载| 91性高| 亚洲本色精品一区二区久久| 色999五月色| 日本性爱欧美性爱| 精品无码久久| 久久久久久久六六| 久久精品国产亚洲AV清纯| 超碰碰97资源站| 啊啊啊水好多| 精吧天堂| 一本一道久久综合久久| 蜜臀久久一区二区| 色婷婷影院| 日本不卡卡一区| 国产性刺激| 密臀AV在线| 中文幕97| 啊啊啊 在线| 亚洲欧美91| 国模91| 九九九九九九九九九国产精品 | 日韩人妻精品久久久久| 九九热免费国产视频婷婷伊人| 日韩三级一区| 中文幕97| 伊人久久AV诱惑悠悠| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 无码操逼视频一下| 物业黑人 AV一区| 囯戸精品高潮呻吟旡码| 色五月激情AV在线| 日韩啪啪啪啪啪| 少妇厨房愉情理伦片bd在线观看 | 亚洲天堂另类| 天天综合AV| 户外裸露刺激视频第一区| 黑白配性爱AV成| 精品一区二区三区四区女| 国产一级作爱毛片| 91被操| 熟女高潮合集-永久久久-成人AV | 日韩AV一区二区三区四四| 精品综合久久久久久五月天| 欧美亚洲在线| 色妺妺AⅤ| 午夜无码熟妇丰满人妻| 午夜综合在线| 日本精品88888888| 亚洲图片 91| 中文字幕一区二区三区高清| 北约熟女超碰| 1000午夜黄色| 91网站18在线| 成人日韩中文字幕| 95精品在线| 超碰在线91| 色情五月婷婷| 天天干天天操天天干天天操| 日本高清_区二区三区| 97狠狠| 国产白丝网站| 91美女视频直播| 97操97干| 大逼色网站| 天天欲望网| 风月影院男女十八禁| 青青青艹在线视频| 亚洲淫乱骚妇AV| 天操天操夜操夜月操月年年操| 欧美一区二区三区日韩| www.人人cao| 亚洲av淫乱| 亚洲欧美日韩精品久久久一区二区| 国产三级资源在线观看| 美女操逼福利视频| 青草成人免费视频一com| 国产熟女精品一区二区| 九九九九一区| 四虎影视欧美| 中文乱码字字幕在线第5页| 熟女人妻一区二区三区| 精品欧美老熟女一二区| 天天狠操| 日韩激情啪啪| 国产精品久久伊人| 啊啊啊啊嗯嗯嗯用力好爽| 亚洲欧美中文日韩视频中国语| 色墦五月丁香| 中文字幕日韩综合| 久久欧洲| 欧美色综合图片| 极品出轨视频网站| 国产精品白领在线观看| 三级色综合| 国产区91柔拿会所技师| 欧美一级三级| 一区麻豆 高清中文字幕| 久久大线蕉一区| 91国产在线精品| 91日产桃蜜| 欧美97爱| 欧美性巨大╳╳╳╳╳高跟鞋| 综合五月婷婷| 在线综合 亚洲 欧美中文字幕| 加勒比人妻综合| 新怡红院| 国产精品干干干| 日韩欧美午夜视频在线| 开心六月色| 色综合99999| 啊啊啊好想要| 大香蕉久| 欧美日韩人人精品| 91色s| 美女91网站| 欧美一级国产一级| 四虎AV无码| 第四色亚洲色图| 日本国产二线女色| 亚洲日韩在线a不卡99精品| 国语av最新自产拍在线观看| 91美女视屏| 久久精品国产97欧美精品亚洲 | 天天色悠悠激情| 欧美色图在线视频少妇| 免费试看60秒| 在线观看一卡二卡| 2020中文字幕在线| 欧美日本中字另类在线| 天天色粽合合合合合合合| 久久久久78| 青娱乐啪啪视频| 久久综合激情| 欧美色图 人妻| 国产亚洲色婷婷久久99精品91 - 百度 | 国产精品乱码久久久久| 美国一区二区免费视频| 欧美一级欧美三级在线观看 | 翔田千里AⅤHD无码| 综合网欧美在线| 情色大香蕉| 色就色综合| 91最新综合| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 国产精品黄色三级av| 九九热精品在线| 夜夜嗨一区二区三区三州加勒比| 欧美日韩国产高清在线一二三区 | 人妻天堂综合网| 亚洲欧洲日韩中文字幕一区| 久久九九视频九九视频| 亚洲天堂美臀在线| 黑丝自慰喷水网站| 操死我了嗯嗯嗯| 无遮挡一级毛片视频免费的| 情色av电影| 天天日天天干天天色| 亚洲色图91欧美日韩| 综合久久99| 丁香激情五月| 色综合一本| 九月丁香婷婷| 性猛交| 欧美熟妇乱码在线一区| 欧美日韩中文视频播放| 日韩精彩免费| 91啦人妻| 色阁阁AV综合网| 亚洲国产成人福利在线观看| 日韩色图 一区二区| 国产操操日韩三级黄| 精品一区二区久久| 天天弄天天操| 在线洲亚线| 另类图片五月| 一级片视频啪啪| 麻豆 亚洲 97| 欧美东京热精品A∨| 人人操人人精品影片| 欧美v亚洲v日韩v最新在线二区| 四虎在线视频| 97中文天堂| 成 人片 黄色大片| 丝袜av一区二区三区| 久久久久久AⅤ无码免费肉站| 啊啊啊 在线| 黑操B| 天天操夜夜嗨| 日韩精品亚洲一二三| ss久久| 人人干黄色| 伊人在线大香蕉视频久久| 亚洲av乱伦色图网站| 欧美国产精品久久九九| 国产久久成人| 欧美色图另类图片| 97爱爱影院| 国产精品无码论坛| 18啪啪手机免费性爱| 日韩综合97P| 99999无码| 老司机天天操| 亚洲无码视频免费在线观看网址!| 96国产污污污丝袜| 91熟女熟妇视频网站| 夜夜天天噜狠狠爱2021| 超碰九九| 国产蜜臀在线| 刺激性视频黄页| 婷婷九月色| 亚洲 日韩 丝袜 熟女 变态| 天天爽天天操啊啊啊| 日本91白丝| 2025年A片视频精品| 天天干1区2区在线| 日韩AV中文字幕电影| 婷婷亚洲五月***久久| 欧美激情性爱视频网站| 小说区 图片区色 综合区| 国产外初女出血视频| 1区2区3区中文字幕日韩| 免费啪啪啪网站18岁| 成人精品一区二区91毛片不卡| 久热这里只有精品9| 久久华人网| 久久一二三四不卡 | 麻豆视频一区二区| 日韩三级性| 91精品婷婷国产综合久久竹菊| 欧美日韩免费专区在线| 荡小穴在线观看| 6080yy午夜理论三级一区二区三区无码| 国产在线视视频有精品| 欧美劲爆视频一区二区| 人妻 丝袜美腿 中文字幕| 欧美激情视频在线一区| 三级精品三级在线观看| 亚洲国产熟妇综合色专区| 狠狠入| 久久久久久裸体| 2020中文字幕在线| 国产成人精品一区| 天堂av最新电影网| 亚洲色图欧美色18直播在线| 免看60秒涩涩视频| 久久久免费高清中文视频| 亚洲色悠悠久久88| 国产精品午夜精品| 东京热av男人的天堂| jiujiujiujingpin| 一摸二插三插| 美女天天干| 熟妇色99| 大色综合| 午夜福利无毒不卡| 亚洲欧洲网站免费观看| 天天干人妇| 啊啊啊操一区| 97国产超湿| 最新av在线| 麻豆乱码久久精| 欧美变态激情网| 精品久久久一本一道| 亚洲做性| av网站免费线看| 国产女s强制榨精视频| 国产Aα| 国产超碰人人操| 亚洲天堂,男人| 97香蕉人人乳| 色偷偷超碰亚洲| 成人怡红院| 精品欧美老熟女一二区| 丝袜剧情| 91色鬼| 国产丰满少妇久久久精品影院| 日韩特一级久久| 日日骚一区二区三区| 日本一级特级毛片视频| 日本性爱少妇| 亚洲欲色9532548967一区| 曰本91情色| 久久99干一本高清| 国产又黄又爽又刺激久久久久久| 人人操人人大香蕉| 精品视频97| 91国产丝袜白虎| 欧美日本成人一区二区| 国产小视频91| 久久国产精品91| 天美传媒精品一区二区三区| 国产福利视频精品视频| 欧美成人黄网色网站| 亚洲丝袜B诱惑| 亚洲久草AV色图| 中文字幕,人妻,日韩| www.婷婷五月天| 国产精品诱惑| 國產尤物AV尤物在線觀看 | 中文字幕在线免费观看| 最新中文字幕在线亚洲| 亚洲国产精品久久久久婷婷青年| 激情婷婷丁香网| 中文字幕在线免费观看 | 亚洲av无码成电影在线播放| 人妻久久久久久| 97在线青| 色约约一区=区三区| 草草影院最新网址| 日本不卡码黄色| 国产精品伦理| 免费A V在线| 午夜AV污污污| 国产精品久久久久无码Av网曝门| 懂色AV一区二区三区| 嫩草91| 日韩精品黄片免费观看| 国产欧美成人精品| 久操操AV电影| 又黄又粗又硬又长又大| 9Ⅰ超碰| 五月婷婷大香蕉| 竹菊一区二区三区AV线| 亚洲综合中文字幕有码| 欧美熟女逼久久久久久| 18禁中文字幕| 激情小说亚洲视频| 久久久国产成人一区二区三区在线| 大香蕉色网| 国产女同视频在线播放| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 精品人体无圣光凹凸| 无码丰满熟妇一区二区浪潮AV| 97内射偷拍| 91精品微拍福利| 亚洲人在线| 视频在线97| 2020国产精品| 久久久无码精品人妻二区 | 欧美后入式| 67194国产| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 日本熟女中文| 免费视频观看60秒| 97视频观看| 精品高潮| 国产传媒1234区| 牛牛操视频逼| 亚洲日韩少妇一道本视频| 欧日a| 91欧美网| 亚洲欧美一区二区三区在钱蜜桃 | 国产精品久久久鸭无码的功能| 亚洲 欧美 日韩另类 麻豆| 国产无码一二三区| 97超碰欧美中文字幕| 久久久久久久78| 91在线超高颜值国产| 亚洲色欧| 国产黄a三级三级三级av在线看| 26uuu国产亚洲综合| 欧美中字不卡| 亚洲熟女中文字幕在线| 亚洲欧美综合| 九九玖玖精品| 日本 色 导航| 密臀视频三区免费网站| 啊嗯好大视频在线观看| 日韩欧美午夜视频在线| 91天美| 中文字幕久久精视频久久大全| 伦理片秋霞免费影院| 99999亚洲| 裸体美女久久久| 99久热| 影音先锋日本乱伦| 97欧美综合网| 国产精品午夜福利视频| 亚洲色啪| 日韩欧美中文| 人妻一区二区三区熟女| 久久久内射良家| 自拍盗摄一区| 日本中文字幕在线视频| 国内精品a| 夜夜夜夜爽| 混色激情av| 亚乱色| 久久久久久亚洲Av无码| 91蜜桃传媒精品久久久一区二区| 国产肏屁眼视频| 超碰79人人乐| wwwcaobibi| 亚洲av综合色| 九九九九九九免费视频| 中日韩久久人妻一区二区| 日日夜夜干| 欧美日本国产日韩激情视频| 成人自拍三级在线观看| 日本精品一区二区三区四区的功能| 超碰天天操| 91嫩草欧美| 亚洲色欲一区二区三区| 五月婷婷六月丁香| 久精品无码av一区二免费国产在线观看 | 国产成人亚洲精品无码古代早漏男| 男人天堂网站| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 综合 欧美 亚洲 日本| 在线免费观看高清无码视频| 超碰色美女| 一区二区不卡免费| 伊人一区二区三区| 91在线丝袜视频| 欧美一二在线| 欧美嫩性色| 亚州少妇| 九九久久久久久爱| 中文字幕日韩综合| 在线观看一卡二卡| 人人色97| 后X久久| 亚洲不卡不卡中文字幕不卡 | 91欧美另类| 抽查国产福利主播| 日本人妻天堂网站在线播放| ,国产乱人伦精品一区二区三区| 色香阁在线| 人妻天天爽夜夜爽精品2| 日韩在线76| 91女神在线视频| 啊啊啊在线观看免费视频| 高凊专区人人操| 蜜伊人色综合97| 99爱久久视频频| 夜夜爽妓女| 搞中出视频在线观看| 亚洲av热热色| 婷婷九月国产| 欧美高清16| 亚洲人妻色图| 探花视频免费观看国产专区| jazzjazz国产精品麻豆| 精品一区二区国产日韩| 中文字幕亚洲永久精品| 国产1769在线| 色狠狠色| 91亚洲欧美色图| 人妻天堂综合网| 美女的肌被草喷水视频| 亚洲日本天堂| 日本布卡一区二三区| 老女人综合网| 先锋色眉乱伦资源| 亚洲国产高清福利视频| 老女人爆菊| 国产成人主播| 精品无人区麻豆乱码1区2区图片| 久久久久久久97| 性久久| 日韩av在线播放不卡| 国产亚洲 中文欧美久久| 97er欧美性| 99re28在线观看| 性爱视频免费网址| 久操精品网| 人妻久热在线| 九九九九一区| 91人妻精华帖| 你懂得91| 91成人社区| 久久精品—区二区三区内射| 国产精品久久久久久高清无码免费看 | 国产 无码 一区二区| 六九九九| 色诱avtt| 欧美97网| 天天色综亚洲91污| 日日干夜夜操视频h| 大香蕉92| 无遮挡一级毛片视频免费的| 亚洲午夜免费狠狠干| 中文字幕人妻色偷偷久久皮| 蜜臀久久久99久久久久| 国模无码一区二区三区在线| 首页亚洲国产高跟丝袜诱惑视频| 啊啊啊好疼| 欧美精品23| 天天做天天爱天天爽| wuyechaopeng| 麻花传媒免费网站在线观看| 欧美激情中文字幕另类小说| 精品网站99999| 乱伦熟妇一区二区| 中文高清一区二区的| 国产女人9999| 嫩草在线视频| 日韩一区二区熟女| 黑人在线91| 性做久久久久久免费观看软件 | 一起草三级AV电影在线观看 | 欧美色图99| 家庭乱伦国产| 99RE在线视频精品,这里只有精品| 东京热双插| 再深点灬舒服灬太大了好硬好爽| 黑人干亚洲| 51一区二区三区| 天天摸天天碰天天添青青| 国产白丝精品在线观看| 开心五月婷婷| 国产又粗又长的视频| 日韩成人性爱电影在线播放| 欧美一区二区三区黄色影视| 欧美性爱第一页久久| 99re3这里只有精品| 操国产高清| 欧美一区91大爱| av天堂电影网| 蜜桃传媒一区二区亚洲| 91熟女丨91老女人| 欧美日日网| 秋霞 色色| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 男人 天堂 日 亚洲| 欧美A片中文字幕| 男人 天堂 日 亚洲| 精品无码欧美三级| 精品176精品2| 国产三区免费在线观看| 亚州男人的天堂| 五月婷婷丁香中文字幕| 中文区中文字幕免费看| 国产熟女完整版中字| 亚洲污污网站| 偷窥自拍亚洲天堂网爆| 搡老女人老熟女91老熟女综合网| 六月婷婷综合| 久久性爱视频99| 99精品网站| 超碰 av 女人天堂| 欧美熟女少妇| 91久久久久免| 精品区国产区一区二区三区| 久久婷色| 日本性交操一区二区不卡系列| 亚洲精美粉嫩嫩泬在线观看| 亚洲精品国产av天美传媒| 久久91精品国产9丨久久分亭| 亚洲美女黄色| 搡老熟女老女人老熟妇免费视频| 欧美日韩人妻精品系列一区二区三区| 人人操av| 91无码西班牙视频在线| 欧美暴力猛交| 超碰成人国产| 九九九九九九九九九国产精品| 清清一区二区三区四区不卡视频| 黄色片一区二区三区四区五区| #NAME?| 二色av| 亚洲高清无毛一区二区| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 一区二区首页| 再深点灬舒服灬太大了添视频| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 中字幕人妻一区二区三区| 日韩天天本| 久色网| 久久五月天婷婷丁香中文字幕| 色九九九九九九| 又大又白奶子| 日本高清一区二区在线| 91社区伊人| 吊色| 国产午夜福利视频在线| 99色婷婷| 超碰91在线| 欧美后入式| 淫骚熟女一区二区三区| 夜夜一区二区| www.av在线视频| 国产91精品在线免费| 男人天堂最新手机版在线青青草| 久久精品一区二区三区不卡| 在线中文字幕极品av| 亚洲一区日韩精品| 人妻熟妇一区二区三区| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 综合干干干av久久久综合网| 9色在线| 激情视屏国产乱伦强奸| 天天干夜夜操一区二区| 国产亚洲色婷婷99精品91| 99re这里只有精品中心播放| 99久久婷婷国产综合| 翔田千里无码中出中文字幕| 国产91精品在线免费| 少妇天堂| 天天综合影院91| 丁香九月婷婷| 女人喷水视频在线观看| 日本成熟少妇A∨网站| 亚洲情色视频| 亚洲视频精选| 亚洲高清欧美总合| 久久九操在线观看| 国产第二页| 新精精品久久精品| 国产夜夜艹| 性色高清在线| 曰本精品久久久| 密臀在线免费观看| 殴美牲| 美女人妻色网站| 天天综合精品| 青青草视频久久| 男人的天堂2010| 91精品成人www| 中文字幕狠狠玩| 国产精品亚洲免费| 五月丁香婷婷综合网| 国产高潮AA片免费看| 搡老人老9丨女老熟人| 中文字幕交换人妻| 一起草精品人妻| 91婷婷| 色妹子A V| 操逼逼无码| 99在线免费视频| 成人贴图日韩欧美| 久久国产精品,久久国产| 久久久久久久久久久人妻| 翘臀vidoes| 91麻豆天美传媒HD| 超碰日韩美妻| 少妇激情AV| 精品999一区二区| 激情综合网激情综合| 干我久操| 亚洲国产婷婷在线播放| 秋霞蝌科网日本一区| 免费A V在线| 欧美激情综合| 天天碰操中国年青熟妇| 欧美男人亚洲天堂| 国产精品农村妇女| 东北女人操逼| 久久亚洲欧美中文字幕国语| 欧美性爱伊人| 亚洲人妻一区二区三区| 黑人中出21连凳花野真衣| 屁股久久久久久久久| 97欧美资源| 久久超碰网| 国产高清26uuu| 激情综合网激情五月天| 天天天肏屄欧美| 欧美 熟女 日韩| 大香蕉懂9| 黄色大片免费在线| 欧美性爱1080p| 色综合美国| 久久精品中文| 超碰91在线| 亚洲欧洲日韩天堂av| www超碰| 97资源免费视频| 啊啊啊爽爽| 国产精品分类在线观看| 国产乱伦性爱AV| 成人在线视频一区| 亚洲色图欧美色图制服诱惑| 中国91AV| 精品亚洲黄色片 国产精品导航一区二区| 九九Av| 狠狠搞 亚洲91| 超碰色图| 欧美亚洲日本视频久久久| 亚洲AV乱码专区国产噜噜亚洲| 熟女网站最新| 精品国产一区探花在线观看| 久久午夜伦| 婷婷探花久久精品一区| 激情综合网激情综合| 天堂种子在线www网资源| 欧美国产有色电影| av网站在线看| 亚洲国产欧美中文永久| 青娱乐手机日韩在线视频| 狠狠爱综合网| 日本操嫩b网| 日本不卡码黄色| 精品一区二区三区四区外站| 伊人九九九| 九九综合久久中文字幕| 欧美激情总合网| 亚洲性高潮| 国产又爽又黄| 色婷婷一区二区三区久久午夜| 伊人热综合| 青青草原人妻| 大色综合| 久久久久免费少妇| 香蕉大久久久| 亚洲成a人在线观看久| 97干天天| 99老司机精品视频在线观看| 920日本午夜免费| 欧美美女视频| 久操大香蕉手机视频在线看| 久久老熟女| 三级三级三级a级全黄三| 97爱b| 在线色导航| 超碰欧美在线欧美| 亚洲另类欧美精品| 麻豆性爱视频在线播放| 国产精品无码成人精品| 青久操| 黑人免费福利视频| 五月天伊人| 免费?级毛片无码?∨蜜芽试看| 日本日日色视频| 老司机福利青青草| 中文字幕在线观看网页| 伊人操你| 老女人碰碰在线碰碰视频| 中文AV制服乱伦| 久操 高清| 国产亚洲精品农村妇女| 老女人91| 亚洲AV无线| 97精品一区| 嗯嗯嗯好爽| 午夜国产综合视频在线观看 | 精品人妻15区| 日本免费中文一区二区三区四区| 人妻少妇精品久久久久久久| 国产色呦呦| 超碰在线91| 蜜桃在线观看一区二区三区| 尤物黄色在线观看网站| 97超碰中文字幕| 国产激情av女片自拍| 色综合天天爱去电影网| 美腿色图| 把腿张开老子CAO烂你| 97视频新免费| 99啪啪| 国产第12页| 国内外毛片在线观看| 在线视频日韩欧美国产| 国产精品日日摸夜夜添骚逼| 大香蕉国产中文自拍| 国产精品探花视频| 亚洲精品97久久中文字幕| 青青操青娱乐| 国产操伦| 大香蕉伊人75| 日韩啪啪啪视频| 日本激情免费大片| 久久久久久九九九| 色老牛| 91在线色综合| 天堂69亚洲精品中文字| 欧美综合传媒| 国产精品视频电影| 国产成人无码高清| 精品乱码在线观看| 久久久啊啊| 午夜黄色免费在线观看| 无码一区免费在线不卡| 综合激情一一91| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 亚洲成人性爱在线观看| 亚洲图片激情小说| 超碰久久网| 久久9 9 9精品| 最新中文字幕精品在线| 91情色| 国产97在线播放| 国产精品熟女九九九| 久久,精品一二三| 久久久久人妻二区精品叶可怜| 99999国产精品| 91欧美性| 欧美精品双插| 九九国产热| а√天堂资源官网在线资源| 国产熟码AV| 久操在97| 成人色女网| 伊人色综合网电影| 久久五十路熟女人妻| 亚洲无码视频免费在线观看网址! J?P?NESEHD熟女熟妇伦 | 丁香五月天激情网站| 美女视频尤物网在线看| 屁股久久久久久| 九九九热精品| 天美一二三在线观看Av| 婷婷四五区| 丁香五月影院| 26uuu国产亚洲综合| 中文字幕三四区| 日韩超碰97| 久久久精精精| 老熟女综合网| 蘋果手機免費看成人Av| 日韩99神马视频片| 男人干美女| 欧美 青青草| 欧美18禁91| 久久人妻精品| 婷婷丁香五月综合| 婷婷色导航| 久久久人妻| www.色婷婷| 黄片不用下载在线观看| 欧美日本一区二区a人| 久久av一级av少妇av高潮| 国产一区免费午夜视频| 中文字幕三四五区| 超碰导航97| 熟妇人妻精品一区二区| 亚洲图片欧美偷拍| 91亚洲欧美激情| 精品二999| 久久一区二区加油站| 日韩熟女视频二区| 国产精品69久久久久孕妇欧美| 五十路熟女,国产欧美精品区一区二区三区| 色婷婷成人综合| 96免费视频在线| 久久久久元码视频| 一区二区三区在线日韩影院观看| 久久网亚洲| 日日日日做夜夜夜夜做无码97| 欧美精品亚洲精品日韩传电影| 日韩欧美~中文字| 男人的天堂一区| 肏逼视频日本|