angular臟值檢測(cè)原理 angularjs怎么清除緩存數(shù)據(jù)?
angularjs怎么清除緩存數(shù)據(jù)?如果用AngularJs在IE下發(fā)出GET請(qǐng)求從后臺(tái)服務(wù)取完Json數(shù)據(jù)再綁定到頁面上顯示的話,你可能會(huì)發(fā)現(xiàn)就算數(shù)據(jù)更新了,IE還是會(huì)顯示原來的結(jié)果。實(shí)際上這時(shí)候I
angularjs怎么清除緩存數(shù)據(jù)?
- 如果用AngularJs在IE下發(fā)出GET請(qǐng)求從后臺(tái)服務(wù)取完Json數(shù)據(jù)再綁定到頁面上顯示的話,你可能會(huì)發(fā)現(xiàn)就算數(shù)據(jù)更新了,IE還是會(huì)顯示原來的結(jié)果。實(shí)際上這時(shí)候IE的確是緩存了hashtag,沒有再次去做Http GET請(qǐng)求最新的數(shù)據(jù)。
- 最直接的辦法是在后臺(tái)擼掉OutputCache,但這種做法并不推薦,需要改每一處被Angular調(diào)用的地方,代價(jià)太大。這種問題應(yīng)該在前端解決最好。研究了一會(huì)兒總結(jié)了最有效的解決方法,并不需要改后臺(tái)代碼了。
vscode為什么選擇直接使用DOM API而不借助現(xiàn)有的前端框架來進(jìn)行開發(fā)?
VSCode直接使用DOM API而不使用前端框架,原因有以下幾點(diǎn):
- VSCode從2011年開始開發(fā),當(dāng)時(shí)各種前端框架并不像今天這么流行,微軟在選取技術(shù)時(shí)很難考慮當(dāng)時(shí)還未成熟和推廣的前端框架。
- 前端框架性能較差?,F(xiàn)代前端框架本質(zhì)上是用虛擬DOM (React)、臟檢測(cè) (Angular)和數(shù)據(jù)劫持 (Vue)等手段將數(shù)據(jù)的變化自動(dòng)響應(yīng)到 DOM 變化上。對(duì)于絕大多數(shù)前端應(yīng)用而言,前端框架從數(shù)據(jù)到UI的這一套處理方法是沒有性能問題的,其保證的是性能不會(huì)太慢和自動(dòng)響應(yīng),這很契合普通前端應(yīng)用的開發(fā)需求。但是對(duì)于 VSCode 這種應(yīng)用就不適用了。代碼編輯器對(duì)性能的要求很高,可以說其性能要求是各種前端應(yīng)用中最高級(jí)別的。目前的前端框架難以滿足VSCode的性能需求。
- 微軟具備強(qiáng)大的開發(fā)團(tuán)隊(duì),所以直接使用DOM api開發(fā)并不是太高的技術(shù)門檻,開發(fā)成本不會(huì)太高,且進(jìn)行進(jìn)一步優(yōu)化的空間更大,也不會(huì)受制于某個(gè)框架的發(fā)展。
- 代碼編輯器設(shè)計(jì)的前端技術(shù)更為底層,增量變化、等寬字體的排列和渲染等問題,使用現(xiàn)有的前端框架難以抽象,往往還是需要使用底層API進(jìn)行定制開發(fā),前端框架在這些部分能力不足。
綜上所述,VSCode使用DOM api開發(fā)是微軟團(tuán)隊(duì)的正確選擇,前端框架不是開發(fā)VSCode的最佳選擇。