|
一般,頁面上會(huì)分為很多部分,而不同的部分更新的頻率是不一樣的。如果對(duì)整個(gè)頁面采用統(tǒng)一的緩存策略則不太合適,
而且很多系統(tǒng)的頁面左上角都有一個(gè)該死的“Welcome XXX”。這種特定于用戶的信息我們是不能緩存的。對(duì)于這些情況我們就需要使用片段緩存了。對(duì)頁面不同的部分(片段)施加不同的緩存策略,而要使用片段緩存,首先就得對(duì)頁面進(jìn)行切分。土一點(diǎn)的辦法可以用iframe,用iframe將頁面劃分為一塊塊的,不過我總覺得iframe是個(gè)邪惡的東西。好點(diǎn)的辦法可以用Ajax單獨(dú)的請(qǐng)求這個(gè)片段的內(nèi)容然后再填充,看起來挺美好的。不過使用Ajax也有一些限制:
1、如果頁面上有許多片段,使用太多的這種技術(shù),會(huì)有很多請(qǐng)求發(fā)送到服務(wù)器,HTTP對(duì)同一個(gè)域名有連接的限制,這樣會(huì)降低并發(fā)連接的效率。
2、如果說第一個(gè)不是什么問題,那么還有一點(diǎn)可能對(duì)用戶體驗(yàn)不友好。比如有一個(gè)片段可能響應(yīng)慢點(diǎn),造成頁面閃爍。不過如果前面兩點(diǎn)都可以克服,這個(gè)方案還是可以的。可惡的是我們的客戶(此處省略500字),說他們的大多數(shù)用戶處于一個(gè)禁用JavaScript的環(huán)境里。好吧,這個(gè)方案也不能使用了。如是我們進(jìn)行了一系列其他關(guān)于片段緩存的嘗試:
我們的系統(tǒng)使用的是Spring+Hibernate+Oracle技術(shù),模板引擎使用的是Apache Velocity。假設(shè)下面的片段是我們要緩存的內(nèi)容:
<ul>
#foreach($book in $books)
<li><a href="/book/books/$book.id">$book.name</a>---<a href="/book/books/edit/$book.id">Edit</a> -- <a href="/book/books/delete/$book.id">Delete</a></li>
#end
</ul>
NET技術(shù):頁面片段緩存(一),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。