spring 은 ehcache 를 사용 하여 페이지 캐 시 예제 를 실현 합 니 다.

5145 단어 springehcache
응용 구 조 를'page-filter-action-service-dao-db'로 나 누 면 page 층 은 사용자 에 게 가장 가 까 운 층 입 니 다.일부 특정한 페이지 가 여기에 캐 시 를 하면 사용자 의 요청 이 filter 에서 끝 납 니 다.뒤의'action-service-dao-db'를 더 이상 가지 않 아 도 서버 의 압력 을 어느 정도 절약 하고 페이지 응답 도 가속 화 합 니 다.
시스템 에서 일부 방 문 량 이 매우 많 고 데이터 업데이트 가 비교적 적은 페이지 에 대해 페이지 캐 시 를 설정 할 수 있 습 니 다.예 를 들 어 첫 페이지,일부 조회 페이지 와 통계 페이지 는 몇 분 에 한 번 씩 캐 시 를 업데이트 하도록 설정 할 수 있 습 니 다.
spring 의 ehcache 페이지 캐 시 는 filter 의 원리 로 이 루어 집 니 다.ehcache-web 패키지 의'Simple PageCaching Filter'필 터 는 간단 한 페이지 캐 시 기능 을 제공 합 니 다.특별한 수요 가 있 으 면 이 종 류 를 계승 하여 필 터 를 실현 할 수 있 습 니 다.
아래 밤 들 기:
 1.jar 패키지 참조 추가
pom.xml 파일 수정,가입:

<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache-web</artifactId>
  <version>2.0.4</version>
</dependency> 
2.프로필 수정
1.웹.xml 파일 을 수정 하고 두 개의 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"캐 시 인 스 턴 스 이름 을 추가 합 니 다(반드시 추가 해 야 합 니 다.그렇지 않 으 면 tomcat 시작 시 filter 가 잘못 보고 되 어 알림 을 찾 을 수 없습니다)

<cache name="testPageCache" 

  maxEntriesLocalHeap="10000"

  maxEntriesLocalDisk="100000"

  overflowToDisk="true"

  eternal="false"

  timeToIdleSeconds="300"

  timeToLiveSeconds="600"

/>
3.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"));

  }

} 
Simple PageCaching Filter 류 를 계승 하 는 이 유 는 Cache Manager 를 직접 만 들 기 때 문 입 니 다.그렇지 않 으 면 자동 으로 생 성 됩 니 다.기본 값 은 루트 디 렉 터 리 에 가서"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();

    //      

    chain.doFilter(httpRequest, httpResponse);

  }

}
4.테스트 실행
첫 방문"http://localhost:8080/demo1/hello/list2"주 소 는 Controller 의 정지점 에 들 어 갑 니 다."

두 번 째 방문 은 정지점 에 들 어가 지 않 고 페이지 를 순식간에 불 러 옵 니 다.
"삭제"단 추 를 누 르 면 TestPageRemoveCaching Filter 필터 의 정지점 에 들 어 갑 니 다.
그 다음 에 list 2 를 방문 하면 Controller 의 정지점 에 다시 들 어 갑 니 다.
 
인 스 턴 스 코드 주소:spring-ehcache_jb51.rar
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기