5

두 가지 질문이 있습니다. 첫 번째는 필터가 요청에 많은 오버 헤드를 추가하는 것입니다. 필터가 있고 URL 패턴/*에서 실행되도록 설정되어 있습니다. 즉, 모든 이미지 요청에서도 실행됩니다. 필자는 이것이 성능에 좋지 않다고 생각하지만 동료는 필터에 if 문이 몇 개만 있기 때문에 필터가 요청 당 5 ~ 6 회 실행되는지는 중요하지 않다고 생각합니다.자바 필터 성능 질문

요청 당 필터를 한 번 실행하고 이미지 요청을 무시하는 방법이 있습니까?

감사 Doug

+0

사용자 비밀번호가 만료되었는지 확인합니다. 이 정보는 세션에서 가져옵니다. – Doug

+0

필터는 정의에 따라 요청 당 한 번 또는 두 번만 실행됩니다. 서블릿 전후에 잠재적으로 앞에 앉아 있습니다. 이미지는 클라이언트의 별도 요청에 따라 제공됩니다. –

+0

@Ian : ''은 모든 '요청'및/또는 '전달'및/또는 '포함'에서 실행되도록 구성 될 수 있습니다. 기본값은'REQUEST'뿐입니다. – BalusC

답변

0

코드의 성능에 대한 추측은 처음에는을 프로파일 링하지 않고는 거의 유용하지 않습니다. 필터에서 제안 된 코드가 일부 작업을 수행하는 경우를 제외하고는 속도가 느린 것으로 판단하고 최적화하기 전에 먼저 측정하십시오.

은 기억조차 당신이를 호출됩니다 서블릿/필터 코드 앞에 다른 것들의 많은 일이 당신의 doGet() 또는 doPost() 방법 의 코드 발생 유일하게 보일 수있는 서블릿을 작성할 때 생각. 서블릿 컨테이너는 HTTP 요청을 처리하여 Java 객체에이 요청을 번들로 묶고 코드에 전달하기 전에 모든 다른 처리를 수행합니다.

서블릿 필터가 실제적으로 얻을 수있는 데이터 (예 : 요청 자체)에서 작동하는 두 개의 if 문만있는 경우 문제가 될 가능성은 낮습니다.

4

측정 중이라는 것을 알고 있습니다. 잘 쓰여 있다면, 나는 무시할 만하다. 그러나 예를 들어 생성 된 세션과 관계없이 세션을 가져 오는 경우 (따라서 불필요하게 생성 될 가능성이 있음) 세션 생성은 세션별로 생성되지 않기 때문에 성능 및/또는 메모리 사용에 눈에 띄는 영향을 미칠 수 있습니다. 저렴하고 세션은 요청보다 긴 시간 동안 서버의 메모리에 저장됩니다.

/*으로 바꾸거나 *.jsp으로 바꾸거나 제한된 페이지를 특정 폴더 (예 : /secured, /private, /pages 등을 사용하고 /secured/*, /private/*, /pages/* 등과 같이 url-pattern을 변경하고 모든 정적 콘텐츠를 다른 장소 (예 : /static. 이렇게하면 필터가 정적 내용에 대해 더 이상 호출되지 않습니다.

+1

측정에 대한 합의. 우리는이 질문으로 조기 최적화에 매우 가깝습니다. –

1

먼저 프로필 우선 접근 방식에 동의합니다.

둘째, 필자가 알고있는 한, 웹 서버는 필터와 같이 특정 서블 릿 (/ JSP)을 호출하는 동일한 기술을 사용합니다.

이 경우에는 필터는 정적 자원 (예, JPG 파일)를 필터링하고, 그 폐기물의 비트가 이 경우에는 필터는 동적 자원 (예 서블릿)은 무시할 수있어 여과가요 .. 을 (자바 대부분 스트럿츠와 Jboss-seam 같은 웹 프레임 워크는 필터를 많이 사용하고 있습니다 ..)