<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        借助Ehcache緩存框架實現(xiàn)對頁面的緩存_html/css

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 16:03:17
        文檔

        借助Ehcache緩存框架實現(xiàn)對頁面的緩存_html/css

        借助Ehcache緩存框架實現(xiàn)對頁面的緩存_html/css_WEB-ITnose:Ehcache是一個純Java進程內(nèi)緩存框架,該內(nèi)存框架可以實現(xiàn)對頁面或?qū)ο蟮葦?shù)據(jù)的緩存;與Memacached一樣,該框架也支持集群/分布式緩存。本片博客用于研究如何借助Ehcache緩存框架實現(xiàn)對頁面的緩存。頁面緩存主要用Filter過濾器對客戶端的http請求進行過濾
        推薦度:
        導(dǎo)讀借助Ehcache緩存框架實現(xiàn)對頁面的緩存_html/css_WEB-ITnose:Ehcache是一個純Java進程內(nèi)緩存框架,該內(nèi)存框架可以實現(xiàn)對頁面或?qū)ο蟮葦?shù)據(jù)的緩存;與Memacached一樣,該框架也支持集群/分布式緩存。本片博客用于研究如何借助Ehcache緩存框架實現(xiàn)對頁面的緩存。頁面緩存主要用Filter過濾器對客戶端的http請求進行過濾

        Ehcache是一個純Java進程內(nèi)緩存框架,該內(nèi)存框架可以實現(xiàn)對頁面或?qū)ο蟮葦?shù)據(jù)的緩存;與Memacached一樣,該框架也支持集群/分布式緩存。本片博客用于研究如何借助Ehcache緩存框架實現(xiàn)對頁面的緩存。頁面緩存主要用Filter過濾器對客戶端的http請求進行過濾,如果該請求存在于緩存中,那么頁面將從緩存對象中獲取gzip壓縮后的數(shù)據(jù)(其速度是沒有壓縮緩存時速度的3-5倍)。頁面緩存的過濾器有CachingFilter,可以通過繼承該CachingFilter實現(xiàn)自定義頁面緩存過濾器(Ehcache自身封裝的SimplePageCachingFilter類就是通過繼承CachingFilter類實現(xiàn)的頁面緩存過濾器)。下面與大家分享一個示例:

        工程結(jié)構(gòu):


        代碼1??PageEhCacheFilter.java文件代碼:

        package com.ghj.packageoffilter; import java.util.Enumeration;import javax.servlet.FilterChain;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.ehcache.constructs.blocking.LockTimeoutException;import net.sf.ehcache.constructs.web.AlreadyCommittedException;import net.sf.ehcache.constructs.web.AlreadyGzippedException;import net.sf.ehcache.constructs.web.filter.FilterNonReentrantException;import net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter;import org.apache.commons.lang.StringUtils;import org.apache.log4j.Logger;/** * 頁面緩存過濾器 * * @author 高煥杰 */public class PageEhCacheFilter extends SimplePageCachingFilter { private final static Logger logger = Logger.getLogger(PageEhCacheFilter.class); private static String[] cacheURLArray; @Override protected void doFilter(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) throws AlreadyGzippedException, AlreadyCommittedException, FilterNonReentrantException, LockTimeoutException, Exception { if (cacheURLArray == null) { 	String patterns = filterConfig.getInitParameter("patterns"); 	cacheURLArray = StringUtils.split(patterns, ","); } String requestURL = request.getRequestURL().toString(); boolean containCacheURLFlag = false; if (cacheURLArray != null && cacheURLArray.length > 0) { for (String cacheURL : cacheURLArray) { if (requestURL.contains(cacheURL.trim())) {//判斷當(dāng)前請求是否是要緩存的url 	containCacheURLFlag = true; break; } } } if (containCacheURLFlag) {//當(dāng)前請求是要緩存的url String queryString = request.getQueryString(); if (StringUtils.isNotEmpty(queryString)) {//當(dāng)前請求含有采用問號傳過來的參數(shù) 	queryString = "?" + queryString; 	logger.info("當(dāng)前請求被緩存:" + requestURL + queryString); }else{ 	logger.info("當(dāng)前請求被緩存:" + requestURL); } super.doFilter(request, response, chain); } else {//當(dāng)前請求不是要緩存的url chain.doFilter(request, response); } } /** * 重寫acceptsGzipEncoding方法,使該過濾器兼容對客戶使用IE6和IE7時發(fā)過來請求時的gzip壓縮 * 使用Gzip壓縮時,需注意兩個問題:	 * 1、Filter進行Gzip壓縮時,采用系統(tǒng)默認(rèn)編碼方式,對于使用GBK編碼的中文網(wǎng)頁來說,需要將操作系統(tǒng)的語言設(shè)置為“zh_CN.GBK”,否則會出現(xiàn)亂碼問題。	 * 2、默認(rèn)情況下CachingFilter類(SimplePageCachingFilter類的父類)會根據(jù)瀏覽器發(fā)送的請求頭部所包含的Accept-Encoding參數(shù)值來判斷是否進行Gzip壓縮。雖然瀏覽器IE6和IE7支持Gzip壓縮,但是在發(fā)送請求的時候卻不帶該參數(shù),因此可以通過繼承CachingFilter類,重寫acceptsGzipEncoding方法來實現(xiàn)。 * * @author 高煥杰 */ @Override protected boolean acceptsGzipEncoding(HttpServletRequest request) { boolean ie6 = headerContains(request, "User-Agent", "MSIE 6.0"); boolean ie7 = headerContains(request, "User-Agent", "MSIE 7.0"); return acceptsEncoding(request, "gzip") || ie6 || ie7; } private boolean headerContains(final HttpServletRequest request, final String header, final String value) { logRequestHeaders(request); final Enumeration accepted = request.getHeaders(header); while (accepted.hasMoreElements()) { final String headerValue = (String) accepted.nextElement(); if (headerValue.indexOf(value) != -1) { return true; } } return false; }}

        代碼2??ehcache.xml文件代碼:

        			

        代碼3??ehcache.xsd文件代碼:

        該文件取自該壓縮文件中??【0分下載該壓縮文件】

        代碼4??log4j.properties文件代碼:

        log4j.rootLogger=DEBUG,Console,DailyRollingFilelog4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.layout=org.apache.log4j.PatternLayoutlog4j.appender.Console.layout.ConversionPattern= [%-5p]-[%d{yyyy-MM-dd HH:mm:ss}] -%l -%m%nlog4j.appender.DailyRollingFile=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.DailyRollingFile.Encoding=UTF-8log4j.appender.DailyRollingFile.File=C\:\\framework.loglog4j.appender.DailyRollingFile.DatePattern=yyyy-MM-dd'.log'log4j.appender.DailyRollingFile.layout=org.apache.log4j.PatternLayoutlog4j.appender.DailyRollingFile.layout.ConversionPattern=%d [%t] %-5p %-40.40c %X{traceId}-%m%n

        代碼5??web.xml文件代碼:

        		PageEhCacheFilter	com.ghj.packageoffilter.PageEhCacheFilter		patterns	/index.jsp			cacheName	PageEhCacheFilter				PageEhCacheFilter	*.action			PageEhCacheFilter	*.jsp	

        代碼6??index.jsp文件代碼:

        <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.Date,java.text.SimpleDateFormat"%>		首頁			<%=new SimpleDateFormat("yyyy-MM-dd hh:MM:ss").format(new Date())%>

        每次刷新頁面,如果時間是變動的,則說明該頁面沒有被緩存或緩存已經(jīng)過期,否則則說明該頁面已經(jīng)被緩存。

        【0分下載該示例】

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        借助Ehcache緩存框架實現(xiàn)對頁面的緩存_html/css

        借助Ehcache緩存框架實現(xiàn)對頁面的緩存_html/css_WEB-ITnose:Ehcache是一個純Java進程內(nèi)緩存框架,該內(nèi)存框架可以實現(xiàn)對頁面或?qū)ο蟮葦?shù)據(jù)的緩存;與Memacached一樣,該框架也支持集群/分布式緩存。本片博客用于研究如何借助Ehcache緩存框架實現(xiàn)對頁面的緩存。頁面緩存主要用Filter過濾器對客戶端的http請求進行過濾
        推薦度:
        標(biāo)簽: 緩存 頁面 借助
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产偷窥女洗浴在线观看亚洲| 亚洲第一福利网站在线观看| 亚洲伊人tv综合网色| 最新久久免费视频| 亚洲中文字幕无码永久在线| 国产成人高清精品免费观看| 亚洲日本一区二区一本一道 | 波多野结衣久久高清免费 | 亚洲精品91在线| 久久久久av无码免费网| 亚洲国产精品日韩在线| 毛片免费视频播放| 亚洲老熟女五十路老熟女bbw| 日本一道高清不卡免费| 视频一区在线免费观看| 亚洲精品国产成人影院| 人妻在线日韩免费视频| 久久久久亚洲Av无码专| 成年轻人网站色免费看| 免费无码又爽又黄又刺激网站| 亚洲午夜精品久久久久久浪潮 | 亚洲精品美女网站| 国产高清免费的视频| 一区二区三区免费视频播放器| 亚洲精品亚洲人成人网| 每天更新的免费av片在线观看| 国产成人精品亚洲2020| 亚洲精品综合久久| 在线观看免费中文视频| 亚洲欧美国产国产一区二区三区| 一本久到久久亚洲综合| 久久午夜免费鲁丝片| 亚洲中文无码永久免| 国产亚洲精aa成人网站| 国产精品免费精品自在线观看| 亚洲乱色伦图片区小说 | 亚洲黄色三级网站| 免费国产在线观看不卡| 污视频在线免费观看| 日韩精品亚洲专区在线影视| 亚洲an天堂an在线观看|