這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)spring項(xiàng)目中利用ehcache如何實(shí)現(xiàn)頁面緩存,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、靈丘網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為靈丘等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
如果將應(yīng)用的結(jié)構(gòu)分為"page-filter-action-service-dao-db",那page層就是最接近用戶的一層,一些特定的頁面如果在這里做緩存,之后用戶的請(qǐng)求在filter就會(huì)結(jié)束了,不用再走后面的"action-service-dao-db",很大程度的節(jié)省了服務(wù)器的壓力,也加快了頁面響應(yīng)。
在系統(tǒng)中可以對(duì)一些訪問量特別大、數(shù)據(jù)更新較少的頁面設(shè)置頁面緩存,比如首頁、一些瀏覽頁和統(tǒng)計(jì)頁,設(shè)置成幾分鐘更新一次緩存。
spring的ehcache頁面緩存是用filter的原理實(shí)現(xiàn)的,ehcache-web包中的"SimplePageCachingFilter"過濾器提供了簡(jiǎn)單的頁面緩存功能,如果有特殊需要我們也可以繼承這個(gè)類實(shí)現(xiàn)自己的過濾器。
下面舉栗子:
一、添加jar包引用
修改pom.xml文件,加入:
<dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-web</artifactId> <version>2.0.4</version> </dependency>
二、修改配置文件
1、修改web.xml文件,加入兩個(gè)自己的filter:
<!-- 頁面緩存過濾器 -->
<!-- 添加緩存 -->
<filter>
<filter-name>testPageAddCachingFilter</filter-name>
<filter-class>org.xs.demo1.TestPageCachingFilter</filter-class>
<init-param>
<param-name>cacheName</param-name>
<param-value>testPageCache</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>testPageAddCachingFilter</filter-name>
<url-pattern>/hello/list</url-pattern>
<url-pattern>/hello/list2</url-pattern>
<url-pattern>/hello/view/*</url-pattern>
</filter-mapping>
<!-- 清除緩存 -->
<filter>
<filter-name>testPageRemoveCachingFilter</filter-name>
<filter-class>org.xs.demo1.TestPageRemoveCachingFilter</filter-class>
<init-param>
<param-name>cacheName</param-name>
<param-value>testPageCache</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>testPageRemoveCachingFilter</filter-name>
<url-pattern>/hello/update/*</url-pattern>
<url-pattern>/hello/delete/*</url-pattern>
</filter-mapping>2、修改ehcache-context.xml文件,加入"testPageCache"緩存實(shí)例名(一定要加,不然tomcat啟動(dòng)時(shí)filter會(huì)報(bào)錯(cuò),提示找不到)
<cache name="testPageCache" maxEntriesLocalHeap="10000" maxEntriesLocalDisk="100000" overflowToDisk="true" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600" />
三、增加filter類
1、增加添加緩存過濾器
package org.xs.demo1;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter;
public class TestPageCachingFilter extends SimplePageCachingFilter {
@Override
protected CacheManager getCacheManager() {
return ((CacheManager)ContextUtils.getBean("ehcacheManager"));
}
}
繼承SimplePageCachingFilter類的原因是要自己創(chuàng)建CacheManager,不然會(huì)是自動(dòng)創(chuàng)建,默認(rèn)會(huì)去根目錄找"ehcache.xml",和我們已有的配置不符。
2、增加清除緩存過濾器
package org.xs.demo1;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.ehcache.Ehcache;
public class TestPageRemoveCachingFilter extends TestPageCachingFilter {
@Override
protected void doFilter(final HttpServletRequest httpRequest, final HttpServletResponse httpResponse, final FilterChain chain) throws ServletException, IOException {
Ehcache ehcache = getCacheManager().getEhcache(getCacheName());
//清除緩存
ehcache.removeAll();
//請(qǐng)求繼續(xù)執(zhí)行
chain.doFilter(httpRequest, httpResponse);
}
}四、運(yùn)行測(cè)試
第一次訪問"http://localhost:8080/demo1/hello/list2"地址,會(huì)進(jìn)入Controller中的斷點(diǎn):

第二次訪問就不會(huì)進(jìn)入斷點(diǎn)了,頁面瞬間加載好
點(diǎn)擊"刪除"按鈕,會(huì)進(jìn)入TestPageRemoveCachingFilter過濾器的斷點(diǎn):
之后再訪問list2又會(huì)重新進(jìn)入Controller中的斷點(diǎn)
上述就是小編為大家分享的spring項(xiàng)目中利用ehcache如何實(shí)現(xiàn)頁面緩存了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章題目:spring項(xiàng)目中利用ehcache如何實(shí)現(xiàn)頁面緩存
文章轉(zhuǎn)載:http://www.chinadenli.net/article20/gpcoco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、企業(yè)網(wǎng)站制作、網(wǎng)站制作、App開發(fā)、標(biāo)簽優(yōu)化、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)