Странное поведение AEM Dispatcher: - PullRequest
0 голосов
/ 25 мая 2018

Мы используем AEM 6.2 с Dispatcher 4.2 и , после каждого обновления страницы кеш не рассматривается для ответа .

Существуют защищенные материалы, которые защищены/auth_checker и кэшируется /allowAuthorized.URL контента выглядит следующим образом:

https://www.securedcontent.com/content/sample.html

При загрузке вышеуказанной страницы он запрашивает через Ajax следующий запрос.https://www.securedcontent.com/content/sample/some.query.json/sample/input.json

Оба приведенных выше URL-адреса кэшируются диспетчером.

Но если страница обновлена ​​(sample.html), из кэша будет извлечена только страница html (sample.html).input.json будет извлекаться не из кэша, а с сервера публикации.

Это непротиворечиво и может быть воспроизведено с другим Ajax-вызовом на другой URL, как показано ниже.https://www.securedcontent.com/content/sample/some.query.json/sample/another/input.json

Но последующий запрос к (input.json) будет извлекаться из кэша до обновления страницы (sample.html).

Подробности нашей настройки следующие:

Конфигурация диспетчера:

/aemsecuredcontent
{
    /auth_checker
    {
        /url "/bin/permissioncheck"

        /filter
        {
            /0000
            {
                /glob "*"
                /type "deny"
            }
            /0001
            {
                /glob "/content/securedcontent/*"
                /type "allow"
            }
        }
        /headers
        {
            /0000
            {
                /glob "*"
                /type "deny"
            }
            /0001
            {
                /glob "Set-Cookie:*"
                /type "allow"
            }
        }
    }

    /clientheaders{ "*" }

    /filter
    {
        /2401 { /type "deny"  /glob "*" }
        /2417 { /type "allow" /glob "*query.json*" }
    }

    /cache
    {
        /statfileslevel "1"
        /allowAuthorized "1"

        /rules
        {
            /0000
            {
                /type "allow" /glob "*"
            }
            /0001
            {
               /glob "*.nocache.html*"
               /type "deny"
            }
        }

        /invalidate
        {
            /0000
            {
              /glob "*"
              /type "deny"
            }
            /0001
            {
                /glob "*.html"
                /type "allow"
            }
        }
    }
}

Заголовок запроса URL:

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cache-Control: no-cache
Connection: keep-alive
Cookie: WT_FPC=id=39823rjfngfeihe9jwe; JSESSIONID=sjerht93qu4fg; login-token=48039qi4ig4joacrx.default
Host: www.securedcontent.com
Pragma: no-cache
Referer: https://www.securedcontent.com/content/sample.query.json/sample/input.json
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
X-Requested-With: XMLHttpRequest

Заголовок ответа URL:

Accept-Ranges: bytes
Cache-Control: max-age=2592000
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 8303
Content-Type: application/json
Date: Thu, 24 May 2018 06:53:12 GMT
Expires: Sat, 23 Jun 2018 06:53:12 GMT
Keep-Alive: timeout=5, max=98
Proxy-Server: something-proxywcm
Server: Apache
Strict-Transport-Security: max-age=31536000; includeSubDomains
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-UA-Compatible: IE=edge
X-XSS-Protection: 1; mode=block

Журнал диспетчера после каждого обновления страницы (не из кэша):

[D] [pid 23365 (tid 139886375950080)] checking [/cache-dir/content/sample.query.json/sample/input.json]
[D] [pid 23365 (tid 139886375950080)] cachefile does not exist: /cache-dir/content/sample.query.json/sample/input.json
[D] [pid 23365 (tid 139886375950080)] try to create new cachefile: /cache-dir/content/sample.query.json/sample/input.json
[D] [pid 23365 (tid 139886375950080)] cache-action for [/cache-dir/content/sample.query.json/sample/input.json]: CREATE

Журнал диспетчера второго Ajax-запросатот же URL (кэшированный ответ):

[D] [pid 23365 (tid 139886302521088)] checking [/cache-dir/content/sample.query.json/sample/input.json]
[D] [pid 23365 (tid 139886302521088)] Authorization checker: connected to backend rend01
[D] [pid 23365 (tid 139886302521088)] cache-action for [/cache-dir/content/sample.query.json/sample/input.json]
 [I] [pid 23365 (tid 139886302521088)] "GET /cache-dir/content/sample.query.json/sample/input.json" - -
...