影片直播原始碼,不同業務場景需選擇不同方案去快取資料
├── src │ ├── modules │ │ ├── constant │ │ │ └── cache.ts // 快取相關 │ │ │ └── index.ts // 出口
// cache.ts export enum CacheKeyEnum { USER_INFO = 'user-info', // ... } // index.ts export * from './cache' // 使用 import { CacheKeyEnum } from '~/modules/constant' function getUserCacheInfo() { return localStorage.getItem(CacheKeyEnum.USER_INFO) }
import { useStorage } from '@vueuse/core' // bind object const state = useStorage('my-store', { hello: 'hi', greeting: 'Hello' }) // bind boolean const flag = useStorage('my-flag', true) // returns Ref<boolean> // bind number const count = useStorage('my-count', 0) // returns Ref<number> // bind string with SessionStorage const id = useStorage('my-id', 'some-string-id', sessionStorage) // returns Ref<string> // delete data from storage state.value = null
import {useLocalStorage} from 'react-use'; const Demo = () => { const [value, setValue] = useLocalStorage('my-key', 'foo'); return ( <div> <div>Value: {value}</div> <button onClick={() => setValue('bar')}>bar</button> <button onClick={() => setValue('baz')}>baz</button> </div> ); };
useLocalStorage(key); useLocalStorage(key, initialValue); useLocalStorage(key, initialValue, raw);
import localForage from "localforage"; // 你的專案ID const PID = "your project's ID" // 例項 let lfInstance: LocalForage /** 初始化LF */ export function initLFInstance(): LocalForage { if (!lfInstance) lfInstance = localforage.createInstance({ name: PID }) return lfInstance } /** * 設定或讀取快取資訊, null: 刪除,傳參:更新,不傳參:獲取 * @param key storage key * @param data storage data * @returns storage data | null */ export function useIndexedDB<T, K extends string>(key: K, data?: T | null): Promise<T | null> { if (!lfInstance) { console.error('lfInstance is not initialized') return Promise.resolve(null) } else { return data === null ? (lfInstance!.removeItem(key) as unknown as Promise<null>) : data === undefined ? lfInstance!.getItem(key) : lfInstance!.setItem(key, data) } }
import type { Table } from 'dexie' import Dexie from 'dexie' import { IndexedDBKeys } from '../constant' // 使用者資料表型別 interface IUserData { id?: number name: string phone: string age: number } export class AppDataDexie extends Dexie { userDataDB!: Table<IUserData> constructor() { super(IndexedDBKeys.UserData) this.version(1).stores({ userDataDB: '++id, name, phone, age', }) } } /** 構建DB例項 */ const db = new AppDataDexie() /** 匯出使用者db操作 */ export const userDB = db.userDataDB
import { userDB } from './db' userDB.add({ id: 1, name: 'senar', phone: 'xxxx', age: 22 }) // ...更多操作可以檢視文件 // https://dexie.org/docs/Tutorial/Getting-started
// 檢測localStorage使用空間 function sieOfLS() { return Object.entries(localStorage).map(v => v.join('')).join('').length; } // 檢測sessionStorage使用空間 function sieOfSS() { return Object.entries(sessionStorage).map(v => v.join('')).join('').length; }
export async function getCacheUsage() { const { quota, usage } = await navigator.storage.estimate() const remainingSpace = quota! - usage! const unit = 1073741824 const text = `已使用:${(usage ?? 0) / unit} GB, 剩餘可用快取空間:${remainingSpace / unit} GB` console.info(text) return remainingSpace }
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/69978258/viewspace-3012433/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面對不同的業務場景,選擇零碼還是低碼?
- 直播影片美顏SDK在不同場景下的表現效果分析
- 影片直播原始碼,圖片選擇器ImagePicker原始碼
- [原]不同場景下MySQL的遷移方案MySql
- [譯] Java 資料流的不同應用場景Java
- lodash原始碼分析之快取方式的選擇原始碼快取
- 直播場景影片和特效解決方案特效
- 選擇排序中交換資料的不同方式出現的不同結果排序
- 分散式快取--快取與資料庫強一致場景下的方案分散式快取資料庫
- 直播間原始碼,透過Redis實現資料快取原始碼Redis快取
- 電話機器人在不同的行業有不同的應用場景和不同的效果機器人行業
- 深度解析HarmonyOS SDK實況窗服務原始碼,Get不同場景下的多種模板原始碼
- 直播商城原始碼如何實現資料的單項選擇原始碼
- 不同企業該如何選擇伺服器租用伺服器
- 直播app原始碼,資料庫多資料來源自動選擇實現APP原始碼資料庫
- 螢石裝置影片接入平臺EasyCVR私有化影片平臺影片監控系統的需求及不同場景攝像機的選擇VR
- Spring Boot應用中如何動態指定資料庫,實現不同使用者不同資料庫的場景Spring Boot資料庫
- 短影片全套原始碼,解決快取擊穿的常用方案原始碼快取
- 不同性別玩家對於遊戲環境的不同選擇遊戲
- Netty的原始碼分析和業務場景Netty原始碼
- Dcat Admin from 表單 點選不同型別展示不同資料型別
- 表單請求 統一欄位不同場景不同處理
- 如何根據不同業務場景調節 HPA 擴縮容靈敏度
- 小程式直播,影片號直播兩者有哪些不同之處
- 資料庫技術方案與業務場景的深入融合資料庫
- 開箱即用的資料快取服務|EMQX Cloud 影子服務應用場景解析快取MQCloud
- 視訊直播app原始碼,不同分類頂部背景色APP原始碼
- 點晴模切ERP的不同版本,企業該如何選擇?
- 乾貨:不同場景容器內獲取客戶端源IP的方法客戶端
- 巧用列舉來處理UI中顯示值與業務值不同的場景UI
- 直播帶貨原始碼,日期時間選擇器 選擇範圍限制原始碼
- 直播帶貨app原始碼,獲取直播影片的第一幀APP原始碼
- [ Git ] 不同場景下如何使用「撤銷」操作Git
- RFID電子標籤根據應用場景的不同如何選型?
- 微服務間如何選擇推送和拉取資料微服務
- 資料遷移方案選擇
- Storm框架:如何根據業務條件選擇不同的bolt進行下發訊息ORM框架
- 直播預告(不同效能測試場景科普)(免費,大家都可以參加)