日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
呦呦影院| 天天综合青苹果| 国产精品黑人一区二区三区| 国产性感在线观看| 伊人色综合网电影| 欧美区亚洲区偷拍区| 亚洲。天堂。日本在线观看| 久久久艹艹艹| 自拍偷拍 日韩无码| 三及片网站| 中文字幕在在线观看网站| 草草影院最新网址| 男人天堂网站| 人妻丝袜一区二区三区在线| 色综合99999| 激情自拍 校园春色| 国语av最新自产拍在线观看| 日欧亚洲二三区大片不卡| 精品美女少妇一区二区| 久草线上视频免费看| 91 刺激在线| 女人午夜视频777| 极品色| 1204av韩国| 色97| 大奶啊啊好爽| 大香樵伊人网| 在线观看色视频| 91综合色| 日本欧美不卡| 国产精品亚洲色婷婷久久久| 欧美日韩国产色五月综合在线| 麻豆 欧美 日韩| 91久久精品中文字幕| 欧美视频一| 伦理第一页| 天天草AV| 色妇91| a人欧美综合天堂麻豆| 久久久com| 熟女六十路| 亚洲一区二区三区中文字幕| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 91丨人妻丨国产丨丝袜| 97精品全部| 韩日自拍| 91色伦| 啊啊啊不要嗯嗯在线观看| 碰超人人在线一区二区三区| 秋霞一区二区三区四区五区六区七区| 天天综合欧美综合| 男人网站婷婷| 久热精品在线| 97操97干| 亚洲国产综合视频| 性色av蜜臀av色欲aV| 边做饭边操逼逼| 人人么人人操| 极品极品色影院| 激情五月天丁香社区| 欧美成人一级免费电影| 色综合色欲色综合色综合色综合| 成人av动漫在线观看| 人人摸人人叼| 伊人久久婷婷| 欧洲综合视频| 久久欧洲| 色97国产69香蕉| 国产人妻精品一区二区三区秋霞 | 麻豆伊人网| 欧美72网页| 欧美性天天影院| 超碰吊日色| 91bbbbbb| 精品久久无码午夜福利| 精品性爱一二三区| 蜜桃精品一区二区三区ww| 欧美大香蕉97| 麻豆成人影音在线| 欧美性爱中文字幕无线码| 在线观看中文av字幕| 一区二区三区精品视频| 超碰午夜在线| 亚洲色综网| 日韩小电影| 日本人妻伦在线中文字幕| 无码逼| 欧美性爱五月天| 在线97在线| 欧美色吧综合| 亚洲色图尤物视频| 97色色色| 欧美日韩国产色五月综合在线| 久久久青青草| 在线A日本| 久操黄色视频| 亚洲第一页色网| 日韩成人网址| 欧洲与亚洲欧美精品中文字幕| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 国产高清午夜成人在线观看| 国产13区| 东京热,男人的天堂| 国产福利视频精品视频| 日本 成 人 小说 电影 一区二区| 黑人与人妻| 抽插一区二区视频| 在线国产福利网址导航| 国产视频一区二区在线| 亚洲美女精品九九视频| 熟女六十路| 精品一区二区麻豆| 另类欧美色| 秋霞无码av鲁丝片一区| 黄总AV色图| 久久精品国产亚洲粉嫩| 免费一级欧美片片线观看| 精产国品一区二三产品| 不卡在线观看视频| 99热日本| 玖玖久久久| 久久婷婷伊人| 欧美亚洲清纯| 99色色网| 欧洲性爱无码区| 性吧在线视频| 92久久| 99在线精品观看99| 天天躁日日躁狠狠狠躁| 精品少妇一区二区三区在线视频| 精品九区| 97天天摸天天碰| 青青青在线高清视频在线一二三四区| 丝袜美腿欧美| 色亚洲欧美| 日本九九九九| 色九久| 看一级黄色视频| 日韩中文字幕宗合在线| 色综合V| 熟妇激情| 婷婷五月天基地| 可乐操在线| 伊人色综合网| 操国产逼| 91艹| 青青草影视蜜久久| 91精品黄在线观看| 亚洲系列欧美| 欧美极品女人的天堂| 国产精品久久久久9999小说| 精品人妻一区二区免费蜜桃| 亚洲欧美国产中文视频| 91日产欧美| 无码国产精品久久久久| 亚洲在线A| 亚州精人品大香蕉| 欧美国产欧美在线观看| 欧美亚州色的图| 欧美强奸一区二区诱惑| 男人天堂欧美| 欧美青青草视频| 欧美日韩国产在线| 艹精品| 久久熟女嫩草成人片免费 | 97香蕉人人乳| 亚洲AV噜噜狠狠网址蜜桃动漫| 性欧美精| 天天综合色电影| 18啪啪手机免费性爱| 久热大香蕉网站| 日本一区二区三区四区免费观看| 九九九九九九九九九国产精品 | 91在线精品一区二区三区| 亚洲综合99999| 操逼1区| 综合久久9| 久久大线蕉一区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 大伊香蕉在线视频免费| 黄片免费日韩| 国产精品午夜福利| 精品96久久| 日韩精品一二三四| 日韩中文字幕二区| 欧美人妻久久精品二区三区| 玖玖爱在线视频免费观看| 自拍亚洲综合| 九九热五区| 久久久97| 国产AV毛片| 日本506070| 漂亮人妻被强中文字幕hd| 亚洲五区熟女| 色综合91| 久碰视频| 亚洲中文一区二区三区视频| 国产 无码 一区二区| 日语五十路和六十路亚洲国产精品| 在线情色电影 91大 | 黑丝少妇在线观看| 天天操天天插| 思思热免费视频观看| 国产又粗又大硬免费色网视频| 日夜尻逼网| 天天综合网1| 中文久久一区| 国产久久久9999| www色色com| 国产成人免费观看在线视频| 色青青久久影视| 日韩探花精品在线视频| 一级片在线观看高清无码| 永久电影三级在线观看| 日韩久射综合| 国产999精品久久久| 激情黄色五月天| 熟女色图在线| 鸥美精品一区二区久久婷婷| 中文字幕日产av人| 久无码| 精彩国产视频播放1区2区| 久久手机视直播| av中文字幕在线熟女| 玖玖色综合| 国产激情综合五月久久| 色婷婷影视| 99久久婷婷国产综合精品草原| 亚洲综合中文字幕有码 | 色老牛| 欧美 亚洲 综合 制服 另类| 日韩97视频| 欧美女同在线| 亚洲色图欧美一区二区不卡| 99色网| 免费家庭乱伦视频| 亚洲性爱无码乱伦av| 一区二区三区在线美女| 欧亚性爱在线视频| 久久婷婷综合国际产色怕| 人、人、摸,人、人、草| 亚洲无码?第一页| 综合久久欧美| 91neishe| 欧美亚洲AN| 99黄页网站| 伊人四虎综合| 色汉综合| av网页一区二区三区| 五月天久久综合网| 韩日无码在线观看| 久久这里精品国产99丫e6| 91久久久视| 久久久久网站-538在线视频-欧美永久乱码 | 淫荡网址| 亚洲精品三区在线观看| 色综合久| 男女打扑克高清网站| 久久大精品乱码视频人妻熟女| 欧美激色| 999精品久久久久久久| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 人人透人人操| 亚洲色入欧美| 免费成人自拍视频在线| 亚洲系列第一页| 亚洲操逼网| 99re在线观看| 欧美激情在线观看视频| 天天操天天干一区二区| 97爱免费插| 精品中文一区二区| 亚洲一区二区三区春色| 色五月婷婷久久| 操操操操网黑人| 日韩精品亚洲一二三| 一区AV| 国产成人精品日本亚洲语言| 欧美黑人与女人91~| 久久超碰天天| 乱伦a片视频| 青青草密桃在线播放| 人妻激情在线视频| 国产Av超碰| 天天干美少妇一区| 久久精品99久久久久久| 性爱综合一区二区| 色综合潮| 操逼日批| 亚洲s在线观看| 91美女视频直播| 日日操丁香五月天| 老女人碰碰在线碰碰视频| 试看60秒 爽| 91欧美综合在线| 欧美综合网在线| 亚洲国产无码精品首页久久久| 欧美日韩少妇色情| 中文字幕三四区| 艹我哪美一区无码| 青娱乐休闲视频在线观看| 日本欧美成人片AAAA| 欧美综合色综合| 97在线观看播放视频| 99爱久久视频频| 蜜臀一区二区三区在线| 91偷拍欧美亚洲| 中文字幕欧美日韩三级| 青青国产精品在线| 青青草毛片| 97超碰国产精品| 日韩人妻无码不卡网站| 久久久久久午夜男人的天堂| 91精片| 91天天日| 国产美女裸体秘 永久无遮挡| 天天综合网91入口| 精品无码一区二区三区| 大香蕉综合在线| 中文字幕亚洲永久精品| 91老熟女91老女人| 日韩人妻无码专区| 国产99999| 久久极品一区二区| 黄页av| 韩国轻伦国内自拍一区| 中文字幕一区二区三区四区在线视频| 亚洲丝袜色图| 国产色精品午夜大片| 欧美性第1页| 99热色精品| 国产精品播放| 色 亚洲 91| 黑人无码一区二区| 蜜臀久久99精品久久久久久酒店| 小草三级久久观看| 操逼www.| 精品免费囯产一区二区三区| 欧美少妇内射| 天天干夜夜一操| 97人人爱人人乐| 欧美成不卡网| 在线观看黄色电话| 四虎精品永久在线播放| 色五月激情AV在线| 热天堂一区二区| 欧美综合娱乐久久| 蜜臀久久99精品久久久| 亚洲欧美国产va在线| 免费一级视频特黄色大片| 91少妇人妻| 91欧美性| 97资源欧美| 欧美丰满熟妇XXXX性ppX人交| 欧美色综合| 麻豆 亚洲 97| 欧美夜夜狠| 久久毛卡| 亚欧高清| 日韩在线电影| 中文日韩欧美熟| 日日日日日| 老熟妇一区二区三区…| 爱爱啊啊啊| 乱伦熟妇一区二区| 加勒比综合在线| 伊人国产视频| 欧美在线伊人色| 亚洲乱熟女一区二区三区大香蕉| 岛国视频一二三区| 国产无码久久高清| 99999精品| 夜夜嗨老熟女AV一区二区三区| 亚洲精品一二三四区| 亚洲中文字幕av| 亚洲无码成人精品| 亚洲欧美清纯| 偷拍亚洲视频一区二区三区四区| 偷拍色图| 一本久久精品中文字| 国产天天骚| 久久极品伊人| 国产不卡精品91| 中文字幕 码精品视频网站| 一本一道vs波多野结衣| 亚欧免费| 岛国网址国产 | 成人无码在线超碰网| 久久中出在线| 蜜桃久久精品一区二区三区| 四虎视频在线观看| 国产欧美一区二区| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 女沟厕偷窥piss小便| 欧洲精品二区| 日本不卡在线二区三区| 人人澡人人干| 天天噜| 青青草大香蕉视频| 美欧色综合| 综合 亚洲 欧美| 亚洲欧美另类图片| 97精品视频| 亚洲在饯| 欧美精品久久96人妻无码| 久久精品国产亚洲AV先锋| 久久狠狠色噜噜狠狠狠狠97| 高清有码一区二区| 亚洲日韩美国人妻| 欧美一区二区亚洲天堂| 97色干| 激情第四色| 在线黄页看毛片| 美女人妻色网站| 中文字幕一区二区三区蜜臀| 欧美成人色| 天天综合网合集91| 久久女人| 再深点灬舒服灬太大了添视频| 操逼天美3区| 国产亚洲禁久一区二区| 久久久久久亚洲精品中文字幕人妻| 啪啪视频mP4| 97视频620| 啊啊啊啊啊啊啊啊要喷了| 啊啊啊轻点在线观看| 啊啊啊啊嗯嗯在线久久久| 人妻精品一区二区| 亚洲国产一区二区日韩专区| 欧美亚洲另类在线蜜桃| caoni国产亚洲av| 伊人99热| 久久久久久波多野吉衣高潮| 国产97色在线 | 亚洲| 97精品国产| 精品成人动漫一区二区| 五月婷婷六月激情| 老熟妇一区二区三区啪啪| 亚洲精品乱码久久久久久蜜桃麻豆| 一区二区三区高清| 人人看欧美性爱| 久久五月视频| 上床不卡网站| 欧美色乱| 91粉嫩萝控精品福利网站_精品影音先锋国| 91日日夜夜| 999久久久| 人妻日日干| 亚洲天堂性爱| a啊啊啊啊啊啊啊啊一区二区| 伊人一级免费黄片| 久久XX| 国产十八禁视频| 91综合熟女| 久久精品人人做人人看| 激情综合五| 国产精品久久久久久久久久久久久久久 | 国产精品久久久午夜夜伦鲁鲁| 东京热一区二区中文字幕| 美国一区二区免费视频| 夜夜国产一区| 97欧美精品| 欧美精品日韩一区二区| 久久噜| 加勒比aⅴ| 国产91乱伦| 天天享受天天看| 91在线视频国产网站| 中文字幕在线高清男人的天堂| 久偷拍| 九九九九AV| 91麻豆va国产精品| 免看60秒涩涩视频| 免费强奸av| 天天看片麻豆| 久久精品国产亚洲AV高清演员表| 香一区二区三区| 17c嫩草51久久91嫩草| 夜夜操狠狠操| 免费视频97| 偷拍欧美综合| 啊啊啊在线观看| 亚洲精品男人的天堂| 色图四区| 91久久久久久久久久久| 少妇一区二区三区| 嗯嗯啊啊用力视频免费| 免费无码婬片AAAA片直播色戒| 久久久久久久久久久六六| 91天美免费| AA丁香综合激情| 东京热男人天堂| 探花激情视频| 水滴偷拍| 蜜桃久久久久久| 收看日本人日bb| 青青草手机在线免费观看| 国产又黄又爽又刺激久久久久久 | sss视频华人在线| 插入逼91| 九九九久久久久| 蜜乳AV一区| 欧美色图自拍| 涩涩五月天| 狠狠操狠狠操操| 亚州再线| 韩国一级做A片免费的| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 国产成人欧美一区二区三区的国产| 亚洲综合一| 一级免费啪啪片| 亚洲天堂男人网| 伊人久久久日韩一区| 福利视频一区二区微拍| 酒色综合网| 超碰 另类 欧美| 亚洲日韩美国人妻| 亚洲 欧美综合| 天久久久噜噜噜久久国产精品爽爽 | 91性网| 极品少妇99| 熟女这里只有精品6| 日本亚欧爱爱| 性色高清在线| 男女一级A片大黄,一进一出| 人妻精品视频一区二区三区 | 综合91网| 精品无码一区二区| 亚洲第一无码播放立川理惠| 国产1024在线播放| 91n处女在线观看| 色第一页| 婷婷五月综合在线| 国产久久成人| 欧美,亚洲,日韩,v,天堂,手机在线观看| 五月婷丁香| 亚洲一区二区三区中文字幕| 久久啊啊啊| 欧洲亚洲综合| 亚洲色性情三级| 99久视频| 蜜乳性色无码专日粉嫩骚逼AV| 啊啊啊操死我| 99久久9| 日本伦理一区二区| 无码日韩网站| 中文字幕乱在线伦视频中文字幕乱码在线| 97国产超碰| 97资源欧美| 一区二区三区精品黑丝白丝酒店对鸡 | 国产日韩在线播放| 亚洲不卡三级手机播放| 天天爱天天操| 日韩91网| 高清无码学生妹高潮| 96国产污污污丝袜| 目产99999久久999| 成人日韩中文字幕| 麻豆AV一区二区| 亚洲天堂中文字幕无码男同| 久99视频| 天天操天天舔| 老司机老司机午夜影院| 国产成人无码啪| 精品国产91av一区二区三区| 性久久久| 成人日韩3| 国产三级在线现体验区| 91精品无码久久久久久久| 成人怡红院| 欧美一级二级三级| 日日操夜夜操天天操免费观看麻豆| 欧亚韩国999| 国产丸一视频| 日韩淫色网| 啊啊啊好疼| 国产人妻精品一区二区三区秋霞 | 亚洲欧美日韩制服另类| 国产二区三区免费视频| 夜夜草天天| 蜜乳成人AV| 涩涩涩综合| 啪啪视频亚洲第一| 夜嗨影院| 久青草影院| 欧美亚洲国内自拍| 色色99| 亚洲综合97中文网| 亚洲天堂自拍| 九一综合网| 日韩人人精品| 久操免费观看| 午夜小电影在线插入淫高潮| 成人av影院在线观看| 乱理日韩中文| baiduhicn.com。| 粉嫩AV一区夜夜嗨| 职场同事知名国产国产精品久久欧美日韩 | 国精综合一二三区影视| 欧美人人天天网| 18禁久久| 国产9区| 亚洲日韩美国人妻| 国产67194| 91人妻视频在线| 久久久久国产| 78操B| 日韩欧美午夜一区二区| 国产精品青草综合久久| 亚洲AO在线| 在线情色电影 91大 | 中文字幕乱碼在线| 91国产丝袜美女| 天天综合中文字幕 91| 国产家庭乱伦性爱视频| 97色婷| 美国久久一二三四| 97干在线视频| 2019久久久久久久久福利| 综合色色婷婷| 色超碰综合| 超碰在线1234区| 中日韩免费看男女操逼大全| 乱伦日本色图AⅤ| 欧美成人精品一区二区三区| 伦在线97| 搡老女人911熟妇老熟女| www网站黄| 中文字幕日韩精品一区二区三区| 日韩欧美中文字幕搭讪巨乳美人妻视频| 人人弄人人摸| 日韩精品一二三四| 97草草| 欧美日韩日产免费网站看| 欧美在线视频99| 99热大香蕉伊在线| 欧美呦呦性爱| 人人喜人人妻| 色欧美亚洲| 久热伊人| 欧美成人精品一区二区男人蜜臀| 6080YYY午夜理论片在线观看| 日本精品不卡一二三区| 欧美乱妇狂野欧美在线视频| 欧美国产精品久久九九| 在线观看一卡二卡| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 欧美黑人168页欧美黑人167| 人人艹亚洲| 精品人妻一区二区三区-国产| 91bbbbbb| 蜜桃视频精品一区二区| 91n处女在线观看| 人人考人人摸人人干| 亚洲素人网| 国产精品亚洲无码| 亚洲 图片 欧美 色图| 精品无码少妇| 91欧美| 福利五区| 大屁股xxxxx| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 婷婷精品视频| 国产在线激情| 欧美激情五月天| 欧洲亚洲少妇| 亚洲日本加勒比在线| 婷婷午夜清品久久久久久久性色视频观| 国产精品网址| 天天享受天天看| 国产精品99精品视频网站| 中文97国产| 日本 色 导航| 五月天亚洲网| 亚洲综合激情五月久久| 插插综合网天天影视网| 国产不卡免费在线视频| 黄久在线| 婷婷综合网| 久久色精品视频在线| 久久精品视频久久久| 热热色青青草| 蜜臀AV网站| 97天天在线| 日韩性爱小视频在线观看 | www国产无码| 日韩欧美女优电影| 啊v在线观看视频| 婷婷99狠狠| 易易A毛视频| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 亚洲色欲天天人妻无码系列专区| 97国产精品一区| 91丝袜在线观看视频在线观看| 大香蕉免费3| 欧美激情精品久久久| 天天插天天插| 久久首页| 青青青在线高清视频在线一二三四区 | 日本在线一二| 牛牛操视频逼| 精品夜夜澡人妻无码AV| 色五月69夫妻| 综合一区中亚洲国产成人综合精品 | 91精品免费| 青青草在线视频欧美| 免费看欧美美女黄色大片| 亚洲色图日韩丝袜制服一区二区五月在线 | 蜜桃无码AV一区二区| 干少妇视频| 91欧美丝袜| 东京热一区二区三区四区五区六区| 日韩视频啪啪| 国产强奸AV在线| 9九九国产| 宗合情欲网| 丁香五月激情综合| 黑人嘿嘿嘿超爽免费视频| 激情小说亚洲色图| 国产91丝袜在线播放蜜月| 九九九九九九九九九九九免费国产| 亚洲午夜福利视频| 中文字幕五月婷婷免费| 蜜桃狠狠色伊人亚洲综合网站| 男人天堂免费| 99re99视频在线免费观看| 少妇 综合| 九月婷婷久久| 天天做日日爱夜夜爽| 最新av中文字幕高清| 伊人久久AV诱惑悠悠| 人妻少妇无码 | 丁香九月 婷婷| 人妻一区二区三区四区视频| 青娱乐妇女性生活| 67914在线兔费成人视频| 人妻丝袜肏逼| 91性感网站| 香港成人一级视频在线青青草| 91美女丝袜诱惑视频| 综合自拍| 黄片直播三级黄片两女一男| 伊人五月天激情| 日韩精品人妻一| 精品成人亚洲午夜电影| 亚洲另类欧美精品| 五月丁香婷婷综合| a级成人毛片免费视频高清| 蜜乳AV一区| 免费观看国产不卡av| 久久综合国产精品国产| 在线播放免费av福利片| 韩国手机不卡无码三级视频| 秋霞免费无码视频日韩A片 | 亚州成人a∨| 天天操女人| 日韩内射视频| 97色色色综合网站| 亚州中文字幕超碰97| 超碰在线97国产| 国产第11页| 亚洲日本天堂| 精品少妇人妻一区二区三区| 国产精品久久久久久久久久二区三区| 97国产伦理| 99re在线视频这里只有精品| av草草在线电影| 情色大香蕉| av天堂电影网| 天天干天天舔| 久久精品国产亚洲AV无码做| 久久香蕉国产线看观看猫咪av | 欧美天天综合| 美女视频尤物网在线看| 中日韩欧美精品无码AⅤ一区二区| 欧美人人AAA| 九色 人妻 大香蕉| 亚洲大色堂| 桑老女人九区| 国产成人亚洲精品无码最新在线| 93人人操人人| 999久久久精品国产| 99www.bibizy香蕉资源国产一区二区三区高清 | 偷拍视频青青草在线视频| 久久在线观看免费视频| 国产操操日韩三级黄| 91在线色综合| 国产免费一区| 永久免费观看的毛片的网站| 欧美自拍偷拍免费观看| 久久人妻97久久久久久久| 屁股久久久久久久久| 国产精品剧情| 国产精品无码在线| 人妻天天爽夜夜爽精品2| 男人的天堂无码| 超碰在线人人射| 激情啪啪拍91| 大香蕉欧美日韩| 啊啊啊久久| 亚洲一区二区三区AV无码| 亚洲色图久久成人| 后入综合久久| 中文字幕一区二区在线日韩精品| 欧美后进式| 国产成人啪一区二区| 欧美精品久久96人妻无码| 乱伦系列一区二区| 天堂伊人久久| 岛国免费视频在线| 夜夜操二区| 日日97| 欧美黑人精品一区二区| 少妇同性| 少妇久久久| 丁香六月激情综合| 208天天久久九九九| 国产高清无码一区三区二区| 精品免费1| 97资源久久| 久热婷婷| 人人妻人人爽人人精品| 大色综合网| 91超碰碰在线| 久操凹凸视频| 日本黄色裸日本黄色裸体| 日本人妻丰满熟妇久久久久久| 在线 制服丝袜中出 人妻| 久久大香蕉97| 免费看日产一区二区三区| 中文字幕精品亚洲熟女| 亚洲乱码国产乱码精网站| 欧美天堂第二区| 国产精品黄色三级av| 天天看高清麻豆| 日韩免费在线视频观看| 老汉网| 日韩一级特黄av毛片| 欧美亚洲高清不卡| 亚洲第一精品在线视频 | 搞中出久久| 91欧美丨精品丨入口| 中日亚韩免费视频| 青青草日韩免费观看高清在线| 尤物黄色在线观看网站| 精品人妻一区二区三区视频| 亚洲va有码在线天堂| 亚洲欧洲激情| 日韩啪啪视频| 亚洲资源站| 99自拍B亚洲| 岛国1区2区3区在线观看| 久久骚少妇| 亚洲一区二区性爱电影| 日韩内| 久久人人妻| 视频一区二区三区精品| 一区二区三区四区久久视1| 国产高清MV操逼视频| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 91 欧美| 精品十三区| 色色色天美视频| 欧美日韩人妻精品系列一区二区三区| 久久精品国产精品亚洲艾通辽熟妇 | 波多野结衣AV无码一区| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 少妇天堂| 欧美香蕉视xxx| 浪人综合网| 中日韓欧美高清| 在线黄色污污网站| 色狠狠综合| 亚洲av性爱电影| 亚洲999综合| 98色网| 色狠狠 - 百度| 青青在线视频免费| 亚洲视频小说| 亚洲欧洲另类| 91在线秘 男同| 四虎884| 中文一区二区婷婷视频| 91小视频| 大肥女高潮bbwbbwhd视频| 制服中出中文人人精品| 狠狠中文字幕| 色情乱伦AV| 91操熟女| 日韩无码服务区| 香蕉久久精品| 亚洲欧美精品91| 成人三一级一片aaa| 爱逼综合| 热热色综合网| 怡红院成人av| 在线观看AV不卡| 国内精品久久久久影院亚洲| 日本高清视频xxxx| 亚洲在线a| 国产夫妻性生活视频| 国产熟妇一区二区| 天天综合色电影| 91精品久久综合熟女| 久久97资源 网| 国产日韩手机视频在线| 丝袜美腿诱惑亚洲欧美视频在线观看 | 天天欧美色| 一级久久性爱视频| 精品成人亚洲午夜电影| 999久久久| 天天综合网在线91| 中文字幕午夜精品久久久| 日韩钢筋无码高清啾啾啾| 狠狠欧美| 狠狠干狠狠色| 在线啊v一区| 思思热影视| 国产av波波国产精品| 高清无码久操视频| 97色碰| 97欧美精品| 色欧美亚洲| 伦理第一页| 花花AV导航| 91色欧美| 91宗合网| 亚洲男人天堂AV| 午夜在线播放| 国产精品久久久亚洲第一牛牛_在线观看 | 综合自拍| 久久久久久久久9| 九九九九一区| 91欧美少妇| 欧美 日韩第一性色| 中文无线日韩一区| 久久久内射良家| 亚洲男人天堂视频| 久久久性少妇| 97超碰伊人| 日本幼女18+| 九九热精品视频六| 99re这里只有精品2| 美女十八禁| 97这里有精品| 日韩亚洲欧美中文字幕| 亚洲欧美另类激情小说| 香港澳门日本三级网站| 99久久久久久亚洲精品不卡| 国内精品a| 国产高清成人mv在线观看| 伊人久操| 五月丁香| 人妻天天爽夜夜爽精品2| 91色图片| 免费草草草草草视频| 国产97/欧美| 蜜臀99久久精品久久久久| 国产精品成人AV片免费看网站| 亚洲伊人久久综合97| 国产精品亚洲天堂网址| 日韩不卡a级视频专区| 综合色图区| 麻豆天美久久91| 艳尻美人妻| 欧美洲精品一级| 91狠狠综合久久| 中文操逼字幕| 国产精品宅男免费| 五月婷婷六月色| 美女久久久久久久| 亚洲中亚日激情视频| 97日亚洲欧美| 亚洲日本激情| 久久九色| 伊人久久大香线综合无码| 人妻人久久精品中文字幕| 亚州91| 久久精品国产亚洲AV无码做| 婷婷99| 亚洲情色在线| 欧美 亚洲精品首页| 成人26uuu| 久久性视频| 伊人久久大香蕉线AV五月天| 夜夜春夜夜操| 久久久国产av美女私房| 亚洲伊人久久精品狠狠在线| 97jingpin| 亚洲婷婷综合网| 日韩女模中文造逼| 超碰99热中文字幕| 可乐操亚洲蜜911| 中文字幕五月婷婷免费| 婷婷五月天社区| 校园春色中文字幕AV| 后入式免费视频| 国产精品自在自拍视频| 手机不卡视频不卡在线一二三区| 91超碰在线播放| 亚洲麻豆av一区二区| 黄片在线免费在线观看| 久插不卡| 九九碰九九爱97超碰| 精品区国产区一区二区三区| 免费人人搞97| 久久 精品| 天堂8在线新版官网| 欧美在线啊啊啊 | 天天综合精品| 少妇精品| 色噜噜人妻丝袜a∨先锋影| 91撸色网 玖玖网 欧美| 亚洲成人贴图| 五月色丁香| 五月天人妻综合| 色综合天天| 91网18| 97超碰人人操人人操| 亚洲激情在线| 激情文学小说一区二区| 亚洲国产一区二区入口| 久草色悠悠在线视频| 亚洲无 码A片在线观看麻豆| 九九黄色网| 蜜臀99久久精品久久久久久| 大香蕉强奸乱伦| 久久色一区二区| 精品人妻一区二区三区四区石在线| 久久免费精彩视频| 国产美女91| 国产又操| 亚洲中文sv| 国内三级自拍小视频在线观看| 黄色十八禁| 午夜精品五区| 天天插天天操天天摸天天射天天看| 精品成人无码| 欧美视频激情久久久久久| 91搞逼视频| 久久久性爱视频| 日本性爱欧美性爱| 色超碰综合| 国产精品久久久久久久黄无码| 欧美日韩国产人人| 一,爱啪啪,在线免费视频| 国产诱惑| 亚洲成人久久美女| 少妇熟女一区二区三区| 激情文学网伊人| 亚洲天堂一区| 亚洲淫乱骚妇AV| www.黄色在线| 高潮9999外国| 人妻激情另类| 人人操人人干xxx| 成人精品一区二区三区| 夜色AV无码手机在线影院| 久久久999国产| 大香蕉碰碰| 超清福利精品视频在线| 亚洲国产丝袜在线观看| 黄aaaaaaaaaaaaaaaaaa色网站 | 丁香五月天激情综合| 黄骗免费网站| 伊人丝袜美腿高跟在线观看高清| 欧美性爱日韩性爱| 日韩欧美三级| 九九久久一区二区三区| 天天艹天天日| 综合网亚洲1| 久久五月份| 天天插夜夜操| 亚洲精品97p| 91人妻丝袜无码| 啪一啪免费视频| 精品亚洲天堂| 国产精品suv一区| 久久久久国产无av| 日韩精品资源专区二区| 欧美综合 站| 天美传媒av 在线| 国产成人无码啪| 青草地一本线一区二区三区| 欧美少妇内射| 制服乱伦| 一本精品日本在线视频精品| 国产精品另类一区大香蕉| 中文字幕 av v| 懂色AV蜜臀无码精品APP| 放黄片放3级黄片没穿衣服| 色香伊人| 丁香五月天婷婷姐| 亚洲aV性爱| 国产成人99久久亚洲综合| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 国产性久久久| 97干97色| 熟妇无码视频三区| 老熟女区| 久久国产视频性吧 | 四虎AV无码| 婷婷色播婷婷| 国产亚洲精品av一区| 国产 日韩 欧美一区| 99热这里只有精品1| 色偷偷色偷偷欧美日韩| 偷拍欧美综合| 日本女人操逼| 国产亚洲精品农村妇女 | 天堂伊人久久| 伊人青青一区成人视频在线观看区| 免费毛片在线播放| 日韩免费在线视频观看| 2021国产成人精品久久| 91无码人妻精品一区二区三区蜜桃| 97超碰久久色| 五月婷婷hd| 国产精品久久久视频| 日本99视频| 韩国黄色片精品久久久 | 97操97干| 日韩中文9| 日韩少妇在线视频| 日韩国产十八禁| 亚熟在线| 日韩一区二区熟女| 亚洲熟妇图片| 91在线欧色| 中文字幕老熟妇黄色视频| 亚洲另类在线观看| 六月丁香久久| www.久久99| 操操啪| 日日夜夜天天| 久热无码| 激情综合五月婷婷| 色色操| 99激情| 亚洲天堂东京热| 九九热男人天堂| 无码一区二区三区四区五区六区七区八区九区十区视频 | 超碰97网址| 国产精品欧美激在线| 成人免费不卡在线视频| 麻豆一区二区三区在线看| 在线电影亚洲色图| 久久激情视频| 九九九九亚洲| 亚洲精品97久久| 97爱综合| 日韩av性爱在线播放| 老熟女搡BBBB搡BBBB视频| 欧美爱三级日韩久久| 亚洲图片激情综合另类| 国产av又色又爽又黄| 国人欧美精品一区二区| 黄色欧美性爱视频| 日本 欧美 国产一区| 激情第四色|