free性ⅴideo另类重口,欧美激情视频一区二区三区免费,国内精品国产三级国产av,国产激情久久久久久熟女老人av,欧美成人乱码一区二区三区

大學(xué)生新聞網(wǎng),大學(xué)生新聞發(fā)布平臺(tái)
大學(xué)生新聞網(wǎng)
大學(xué)生新聞大學(xué)生活校園文學(xué)大學(xué)生村官
社會(huì)實(shí)踐活動(dòng)社會(huì)實(shí)踐經(jīng)歷社會(huì)實(shí)踐報(bào)告社會(huì)實(shí)踐總結(jié)社會(huì)實(shí)踐心得
全國(guó)排名校友會(huì)版軟科排名分類排名本科排名一本排名二本排名專科排名學(xué)校地址
求職簡(jiǎn)歷職場(chǎng)法則面試技巧職場(chǎng)故事求職招聘大學(xué)生就業(yè)
英語(yǔ)學(xué)習(xí)計(jì)算機(jī)學(xué)習(xí)電氣工程機(jī)械工程經(jīng)濟(jì)管理建筑設(shè)計(jì)財(cái)務(wù)會(huì)計(jì)
申請(qǐng)書證明書檢討書自薦信演講稿心得體會(huì)調(diào)查報(bào)告讀后感求職信推薦信其它范文

小程序緩存管理添加規(guī)則CacheManager.addRule

string CacheManager.addRule(string|RegExp|Object rule)
添加規(guī)則。

基礎(chǔ)庫(kù) 2.23.0 開始支持,低版本需做兼容處理。
小程序插件:不支持
參數(shù)
string|RegExp|Object rule
規(guī)則

返回值
string
規(guī)則 id

規(guī)則說明

支持的規(guī)則寫法有字符串、正則和對(duì)象三種:

字符串寫法
addRule('/abc'):純 uri 串。
`addRule('GET /abc'):帶方法的 uri 串,除了匹配 uri 外,還會(huì)匹配請(qǐng)求方法。如例子中必須是 GET 方法請(qǐng)求才會(huì)被匹配。
addRule('/abc/:id'):帶可變部分的 uri 串,id 可以是任意符合標(biāo)準(zhǔn)的字符串,表示這一段可以動(dòng)態(tài)變化。比如/abc/123<code>和/abc/321都會(huì)被匹配,而/abc/123/xxx` 因?yàn)槎嗔艘欢危筒粫?huì)被匹配。
addRule('/abc?aa'):帶 query 參數(shù)的 uri 串,包含 aa 參數(shù),值可以為任意值。比如/abc?aa=haha<code>會(huì)被匹配,但是/abc就不會(huì)被匹配,因?yàn)槿鄙僖?guī)則中聲明的 aa 參數(shù);不過如果請(qǐng)求是/abc?aa=haha&bb=123`,雖然多帶了 bb 參數(shù),但是因?yàn)榘?aa 參數(shù),所以也可以被匹配。
addRule('/abc?dd=haha'):帶 query 參數(shù)的 uri 串,包含 dd 參數(shù)且值為 haha。比如/abc?dd=haha<code>和/abc?dd=haha&bb=123會(huì)被匹配,而/abc?dd=123` 就不會(huì)被匹配,因?yàn)橐?guī)則要求了 dd 參數(shù)的值。
以上寫法中的 uri 串如果只有 path 部分,則會(huì)取全局 origin 進(jìn)行補(bǔ)全。比如全局 origin 是 https://weixin.qq.com,而規(guī)則是 <code>/abc,則會(huì)補(bǔ)全為 https://weixin.qq.com/abc。因此在前面例子中 <code>addRule('/abc') 和 addRule('https://weixin.qq.com/abc') 的寫法效果一致。所以一般情況下如果需要匹配的請(qǐng)求 origin 和全局 origin 一致,則規(guī)則中可忽略不寫 orign。
正則寫法
addRule(/\/(abc|cba)$/ig):直接正則匹配請(qǐng)求的 uri,同時(shí)會(huì)比對(duì)請(qǐng)求 origin 和全局 origin 是否一致。
addRule(/^https:\/\/weixin.qq.com\/(abc|cba)$/ig):帶有 orign 部分的正則表達(dá)式,則只匹配 uri,不再比對(duì) origin。
對(duì)象寫法

使用規(guī)則對(duì)象,可以更為詳細(xì)的描述規(guī)則內(nèi)容。(一般使用規(guī)則對(duì)象,是為了匹配請(qǐng)求參數(shù))

規(guī)則對(duì)象:
屬性名    類型    默認(rèn)值    備注
id    string        規(guī)則 id,如果不填則會(huì)由基礎(chǔ)庫(kù)生成
method    string        請(qǐng)求方法,可選值 GET/POST/PATCH/PUT/DELETE,如果為空則表示前面提到的所有方法都能被匹配到
url    any    必填    uri 匹配規(guī)則,可參考規(guī)則字符串寫法和正則寫法
maxAge    number    7 * 24 * 60 * 60 * 1000    緩存有效時(shí)間,單位為 ms,不填則默認(rèn)取緩存管理器全局的緩存有效時(shí)間
dataSchema    Array<DataRule>        匹配請(qǐng)求參數(shù)
其中,dataSchema 用來匹配請(qǐng)求參數(shù)(比如 wx.request 的 data),默認(rèn)可以不填,即不做參數(shù)匹配。

dataSchema 的類型是一個(gè) DataRule 對(duì)象數(shù)組,一個(gè) DataRule 對(duì)象描述一個(gè)參數(shù),比如一個(gè) wx.request 請(qǐng)求的 data 是 {a: 123, b: 'haha', c: true},你想要用一條規(guī)則來匹配其中的 a 和 b 參數(shù),如果 a 是數(shù)字且 b 是字符串就能命中該規(guī)則,那么就需要在 dataSchema 中補(bǔ)充兩個(gè) DataRule 對(duì)象,即 <code>[{name: 'a', schema: {type: 'number'}}, {name: 'b', schema: {type: 'string'}}]。

DataRule 對(duì)象:
屬性名    類型    默認(rèn)值    備注
name    string        需要匹配的參數(shù)名
schema    DataSchema/Array<DataSchema>    需要匹配的參數(shù)模式,支持?jǐn)?shù)組,表示該參數(shù)值有多種模式    
name 表示要匹配的參數(shù)名,schema 為 DataSchema 對(duì)象,用來描述該參數(shù)的類型和值。


一個(gè) DataRule 對(duì)象也可以匹配可能擁有多種類型的參數(shù),所以 schema 也支持為 DataSchema 對(duì)象數(shù)組。比如上述例子中,希望匹配的 a 參數(shù)必須是數(shù)值或者字符串,那么可以這么寫:{name: 'a', schema: [{type: 'number'}, {type: 'string'}]}。

DataSchema 對(duì)象:
屬性名    類型    默認(rèn)值    備注
type    string        需要匹配的 data 對(duì)象的參數(shù)類型,string、number、boolean、null、object、any(表示任意類型),同時(shí)支持?jǐn)?shù)組模式(數(shù)組模式則在類型后面加 [],如 string[] 表示字符串?dāng)?shù)組)
value    string/regexp/function/Array<DataRule>        需要匹配的 data 對(duì)象的參數(shù)值,當(dāng) type 為基本類型時(shí),可以用 string/regexp 來匹配固定的值,也可以通過 function 來確定值是否匹配,如果傳入的 type 是 object,那么表示需要嵌套匹配值是否正確,可以傳入 Array
type 參數(shù)表示要匹配的參數(shù)類型,value 表示要匹配的參數(shù)值。其中 value 支持多種寫法,不同寫法有如下匹配方式:

字符串寫法:直接判值的字符串形式是否和給定字符串一樣,比如 value 值為 123,就要求參數(shù)值必須為 123 才能與之匹配。
正則寫法:直接判值的字符串形式是否能被正則匹配,比如 value 值為 /\d+/ig,就要求參數(shù)值必須為數(shù)字,如果參數(shù)值為 <code>abc 則不會(huì)被匹配。
函數(shù)寫法:在匹配時(shí)會(huì)調(diào)用用戶傳入的函數(shù),交由用戶判斷是否匹配。
DataRule 數(shù)組寫法:當(dāng)參數(shù)類型為對(duì)象時(shí),那么字符串寫法和正則寫法就無(wú)法使用,需要傳入 DataRule 數(shù)組來進(jìn)行匹配,即通過嵌套 DataRule 數(shù)組的方式來匹配嵌套的對(duì)象。
示例代碼

const ruleId = cacheManager.addRule({
  id: 'haha-rule',
  method: 'GET',
  url: '/haha',
  maxAge: 123455,
  dataSchema: [
    // data 字段的匹配,默認(rèn)為空,表示不匹配
    // 類型可以是:string、number、boolean、null、object、any(表示任意類型均可),以及這些類型的數(shù)組表示方式
    {name: 'aaa', schema: {type: 'string'}}, // 類型為 string
    {name: 'bbb', schema: [{type: 'number'}, {type: 'string'}]}, // 類型為 number, string
    {name: 'ccc', schema: {type: 'string', value: 'abc'}}, // 值為 abc
    {name: 'ddd', schema: {type: 'string', value: /(abc|cba)/ig}}, // 值符合該正則匹配,如果該值不是字符串類型,則會(huì)被嘗試轉(zhuǎn)成字符串后再進(jìn)行比較
    {name: 'ddd', schema: {type: 'string', value: val => val === '123'}}, // 傳入函數(shù)來校驗(yàn)值
    {name: 'eee', schema: {type: 'object', value: [{ // 類型為對(duì)象,則通過嵌套的方式來逐層校驗(yàn)
      name: 'aaa', schema: {type: 'string'},
      // ...
      // 嵌套 dataSchema,同上面的方式一樣來匹配嵌套的對(duì)象
    }]}},
    {name: 'fff', schema: {type: 'string[]'}}, // 類型為 string 數(shù)組
    {name: 'ggg', schema: {type: 'any'}}, // 類型為任意類型
    {name: 'hhh', schema: {type: 'any[]'}}, // 類型為任意類型的數(shù)組
  }],
})
補(bǔ)充說明

用戶可以添加多條規(guī)則,每條規(guī)則都會(huì)去解析網(wǎng)絡(luò)請(qǐng)求,然后判斷是否命中規(guī)則。假設(shè)有多條規(guī)則命中,則取第一條命中的規(guī)則。

緩存覆蓋
不同的網(wǎng)絡(luò)請(qǐng)求也可能命中同一條規(guī)則,所以每條規(guī)則可能對(duì)應(yīng)多個(gè)緩存。每條規(guī)則會(huì)有一個(gè)規(guī)則 id,每個(gè)緩存會(huì)有一個(gè)緩存 id,一個(gè)規(guī)則 id 可能對(duì)應(yīng)多個(gè)緩存 id,而緩存管理器的緩存存儲(chǔ)是基于緩存 id 標(biāo)識(shí)的,如果兩個(gè)不同的請(qǐng)求生成了同樣的緩存 id,那么后發(fā)生的請(qǐng)求結(jié)果緩存會(huì)覆蓋前者。因此使用時(shí)需要思考緩存的覆蓋情況,目前緩存 id 生成方式如下:

規(guī)則使用字符串寫法:那么按 method + url + 規(guī)則中聲明的 query 參數(shù)來生成緩存 id。
需要注意的是這里不使用真實(shí)請(qǐng)求中的 query 參數(shù)來生成緩存 id,而是使用規(guī)則中匹配到的 query 來生成緩存 id。比如規(guī)則是 /abc?aa=123,請(qǐng)求是 GET 方法的 <code>/abc?aa=123&bb=123,那么就會(huì)基于 GET /abc?aa=123 來生成緩存 id。而規(guī)則里沒有聲明 <code>bb=123,所以 bb 參數(shù)不會(huì)被納入緩存 id 的生成基準(zhǔn)。
規(guī)則使用正則寫法:那么只按 method + url 生成緩存 id,不考慮 query 參數(shù)。
規(guī)則使用對(duì)象寫法:如果規(guī)則對(duì)象中的 url 是字符串寫法,那么按 method + url + 規(guī)則中聲明的 query 參數(shù) + 規(guī)則中 dataSchema 聲明的請(qǐng)求參數(shù)來生成緩存 id;如果規(guī)則對(duì)象中的 url 是正則寫法,那么按 method + url + 規(guī)則中 dataSchema 聲明的請(qǐng)求參數(shù)來生成緩存 id。
生成緩存 id 時(shí)沒有使用請(qǐng)求中完整的 query 參數(shù)或者請(qǐng)求參數(shù)來作為基準(zhǔn),是考慮到很多請(qǐng)求可能會(huì)帶上 token 或時(shí)間戳等參數(shù)。因?yàn)榇藚?shù)存在不確定性,會(huì)導(dǎo)致每次請(qǐng)求生成的緩存 id 都不同,進(jìn)而導(dǎo)致緩存命中率下降,故采取規(guī)則中聲明的 query 參數(shù)和 dataSchema 聲明的請(qǐng)求參數(shù)來作為生成緩存 id 的基準(zhǔn)。
    作者:大學(xué)生新聞網(wǎng)    來源:大學(xué)生新聞網(wǎng)
    發(fā)布時(shí)間:2025-04-29    閱讀:
    掃一掃 分享悅讀
  • 小程序緩存管理器CacheManager
  • 緩存管理器。全局只有唯一實(shí)例,一旦被創(chuàng)建出來即表示接入緩存管理器。
  • 04-29 關(guān)注:0