환경

AEM Dispatcher 4.3.3

질문

AEM Dispatcher 캐시를 수행하는 HTTP 요청 및 응답

답변

이 설명서는 AEM Dispatcher 모듈을 통해 전달되는 요청 및 응답의 캐시 기능에 영향을 주는 가장 중요한 시나리오를 다룹니다. 모든 캐시 규칙을 다루지 않습니다.

HTTP 요청 및 캐싱 규칙:

디스패처에서 HTTP 요청을 캐싱하려면 다음 규칙을 준수해야 합니다.

1. 절대 URL이며(. 또는 ..으로 시작하지 않음) 파일 확장자가 있고 url의 파일 이름이 파일 시스템의 파일로 작동합니다.

관련 로그 메시지:

URI not canonical: %s.
Unable to map URI to file: %s.
cache file path too long
temporary file path too long
request URL has no extension

예:

/content/test 캐시되지 않음
/content/test.html 캐시됨

2. 첫 번째 파일 확장자 뒤에 슬래시가 없습니다.

관련 로그 메시지:

request URL has trailing slash

예:

/content/test.html/ 캐시되지 않음
/content/test.html/foo.jpg 캐시되지 않음
/content/test.html 캐시됨

3. HTTP GET 또는 HEAD 메서드를 사용합니다.

관련 로그 메시지:

request method is neither GET nor HEAD

예:

HEAD /content/test.html HTTP/1.1 캐시됨
GET /content/dam/test.jpg HTTP/1.1 캐시되지 않음
POST /content/test.html HTTP/1.1 캐시되지 않음

4. dispatcher .any farm 구성에 정의된 /cache => /rules에서 요청을 거부합니다.

관련 로그 메시지:

URI not in cache rules: %s
request URL not in cache rules

예:

팜에 /cache => /rules가 있으며 /content/test.html에 대한 요청이 수신됩니다.

/cache

{

  ...

  /rules

  {

    /0001 {

      type "deny"

      glob "*"

  }

}

캐시되지 않음

팜에 /cache => /rules가 있으며 /content/test.html에 대한 요청이 수신됩니다.

/cache

{

  ...

  /rules

  {

    /0001 {

      type "allow"

      glob "*"

  }

}

캐시됨

5. HTTP 요청에 인증 헤더가 포함되어 있지 않거나 헤더가 포함되어 있지만 팜 구성에서 /allowAuthorized가 1로 설정되어 있습니다.

관련 로그 메시지:

request contains authorization

예:

HTTP 요청:

GET /content/test.html HTTP/1.1
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
  /allowAuthorized "0"
}

캐시되지 않음

HTTP 요청:

GET /content/test.html HTTP/1.1
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
  /allowAuthorized "1"
}

캐시됨

6. HTTP 요청에는 쿠키 헤더에 로그인 토큰 또는 인증 쿠키가 포함되어 있거나, 해당 쿠키 중 하나 또는 둘 다를 포함하고 있고 팜 구성에서 /allowAuthorized가 1로 설정되어 있습니다.

관련 로그 메시지:

request contains authorization

예:

관련 로그 메시지:

예:

HTTP 요청:

GET /content/test.html HTTP/1.1
Cookie: login-token=...

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
  /allowAuthorized "0"
}

캐시되지 않음

HTTP 요청:

GET /content/test.html HTTP/1.1
Cookie: authorization=YWxhZGRpbjpvcGVuc2VzYW1l

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
  /allowAuthorized "0"
}

캐시되지 않음

HTTP 요청:

GET /content/test.html HTTP/1.1
Cookie: login-token=...

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
  /allowAuthorized "1"
}

캐시됨

7. URL에 쿼리 문자열 매개 변수가 있으며 팜의 /ignoreUrlParams 구성을 통해 매개 변수를 무시할 수 있습니다.

관련 로그 메시지:

request contains a query string

예:

HTTP 요청:

GET /content/test.html?test=1 HTTP/1.1

팜 /캐시 구성:

/ignoreUrlParams {
   /0001 { /type "allow" /glob "*" } 
}

캐시됨

HTTP 요청:

GET /content/test.html?test=1 HTTP/1.1

팜 /캐시 구성:

/ignoreUrlParams {
   /0001 { /type "deny" /glob "*" } 
   /0001 { /type "allow" /glob "test" }
}

캐시됨

HTTP 요청:

GET /content/test.html?test=1 HTTP/1.1

dispatcher.any farm /cache => /allowAuthorized configuration:

/ignoreUrlParams {
   /0001 { /type "deny" /glob "*" } 
   /0001 { /type "allow" /glob "q" }
}

캐시되지 않음

HTTP 응답 및 캐싱 규칙:

다음 기준을 충족하면 AEM에서 반환되는 HTTP 응답을 사용할 수 있습니다.

1. 디스패처는 정의된 "renders" 중 하나에서 200 OK 응답을 보내고 받을 수 있습니다.

참고:

/renders에 /timeout이 설정되지 않았거나 0으로 설정된 경우 인스턴스가 다운되더라도 AEM 인스턴스에 대한 연결을 계속 대기하게 됩니다.

관련 로그 메시지:

Unable to send request to remote server.
Unable to receive response from remote server.
Remote server returned: %s
No backend available.

예:

HTTP 요청:

200 OK

캐시됨

HTTP 요청:

404 페이지를 찾을 수 없음

캐시되지 않음

2. 다음 응답 헤더가 응답에 존재하지 않습니다.

  • Dispatcher: no-cache
  • Cache-control: no-cache
  • Pragma: no-cache

관련 로그 메시지:

Backend forbids caching: %s, sent: %s"
response contains no_cache

예:

HTTP 응답:

200 OK
Dispatcher: no-cache

캐시되지 않음

HTTP 응답:

200 OK
Cache-control: no-cache

캐시되지 않음

HTTP 응답:

200 OK
Pragma: no-cache

캐시되지 않음

HTTP 응답:

200 OK

캐시됨

3. 컨텐츠 길이 값이 0바이트보다 큽니다.

관련 로그 메시지:

response content length is zero

예:

HTTP 응답:

200 OK
Content-Length: 0

캐시되지 않음

HTTP 응답:

200 OK
Content-Length: 3120

캐시됨