구성 요소 및 GraphQL 캐시 지우기 clear-cache
이 문서에서는 AEM CIF의 캐시 지우기 기능 활성화 및 확인에 대한 포괄적인 안내서를 제공합니다.
CIF 구성에서 캐시 지우기 기능 활성화 enable-clear-cache
CIF 구성에서는 기본적으로 캐시 지우기 기능이 비활성화되어 있습니다. 활성화하려면 해당 프로젝트에 다음을 추가해야 합니다.
-
/bin/cif/invalidate-cache여기com.adobe.cq.cif.cacheinvalidation.internal.InvalidateCacheNotificationImpl.cfg.json와 같이 프로젝트에서 구성을 추가하여 해당 요청으로 clear-cache API를 트리거하는 데 도움이 되는 서블릿 을(를) 활성화합니다.note note NOTE 작성자 인스턴스에 대해서만 구성을 활성화해야 합니다. -
com.adobe.cq.commerce.core.cacheinvalidation.internal.InvalidateCacheSupport.cfg.json여기와 같이 프로젝트에서 구성을 추가하여 리스너가 AEM의 각 인스턴스(게시 및 작성자)에서 캐시를 지울 수 있도록 합니다.-
작성자 및 게시 인스턴스 모두에 대해 구성을 활성화해야 합니다.
-
Dispatcher 캐시 활성화(선택 사항): 위의 구성에서
enableDispatcherCacheInvalidation속성을 true로 설정하여 Dispatcher 캐시 지우기 설정을 활성화할 수 있습니다. 이렇게 하면 Dispatcher에서 캐시를 지우는 기능이 제공됩니다.note note NOTE 게시 인스턴스에서만 작동합니다. -
또한, 제품, 카테고리 및 CMS 페이지에 맞는 해당 패턴을 위의 구성 파일에 추가하여 Dispatcher 캐시에서 제거해야 합니다.
-
-
제품 및 범주와 관련된 해당 페이지를 찾기 위한 SQL 쿼리 성능을 향상하려면 프로젝트에 해당 인덱스를 추가하십시오(권장). 자세한 내용은 cifCacheInvalidationSupport를 참조하십시오.
캐시 지우기 기능 확인 중 verify-clear-cache
모든 것이 올바르게 설정되었는지 확인하려면 다음을 수행하십시오.
- 작성자 인스턴스 AEM에 해당 서블릿을 트리거합니다(예: http://localhost:4502/bin/cif/invalidate-cache). 그러면 200 HTTP 응답을 받아야 합니다.
- 작성자 인스턴스의
/var/cif/cacheinvalidation경로에 노드가 만들어졌는지 확인하십시오. 노드 이름은cmd_{{timestamp}}패턴을 따릅니다. - 각 게시 인스턴스에 동일한 노드가 생성되었는지 확인합니다.
이제 캐시가 제대로 지워지고 있는지 확인하려면 다음을 수행하십시오.
-
해당 PLP 및 PDP 페이지로 이동합니다.
-
상거래 엔진에서 제품 또는 카테고리 이름을 업데이트합니다. 캐시 구성에 따라 변경 사항이 AEM에 즉시 반영되지 않습니다.
-
다음과 같이 서블릿 API를 트리거합니다.
code language-none curl --location '{Author AEM Instance Url}/bin/cif/invalidate-cache' \ --header 'Content-Type: application/json' \ --header 'Authorization: ******' \ // Mandatory --header 'Cookie: private_content_version=0299c5e4368a1577a6f454a61370317b' \ --data '{ "productSkus": ["Sku1", "Sku2"], // Optional: Pass the corresponding sku which got updated. "categoryUids":["CategoryUid"], // Optional : Pass the corresponding category-uid which got updated. "storePath": "/content/venia/us/en", // Mandatory : Needs to be given to know for which site we are removing the clear cache. }'
모든 것이 잘 진행되면 새로운 변경 사항이 모든 인스턴스에 반영됩니다. 변경 사항이 게시 인스턴스에 표시되지 않으면 개인/시크릿 브라우저 창에서 관련 PLP 및 PDP 페이지에 액세스해 보십시오.
캐시 무효화 API 지우기 clear-cache-api
AEM에서 상거래 관련 데이터의 캐시를 지우고자 할 때마다 트리거해야 하는 API입니다.
요청 유형: POST
헤더 headers
Content-Typeapplication/jsonAuthorization페이로드 payload
다음 표는 기능이 기본 제공하는 기존 속성을 보여 줍니다. 이러한 InvalidateType 속성은 필수 특성(예: storePath)과 함께 지정해야 합니다.
invalidateTypeproductSkus"\"sku\":\\s*\""
Dispatcher
패턴을 사용하여 내부 메모리에서 캐시를 지웁니다.
- 해당 SKU의 PDP 페이지 캐시 지우기
- 해당 카테고리가 존재하는 카테고리 페이지의 캐시 지우기(상업의 graphql 응답 기반)
- 다음 쿼리를 기반으로 캐시를 지웁니다.
SELECT content.[jcr:path] FROM [nt:unstructured] AS content<br>WHERE ISDESCENDANTNODE(content, '{storePath}')<br>AND ( (content.[product] IN ('sku1','sku2') AND content.[productType] = 'combinedSku')<br> OR (content.[selection] IN ('sku1','sku2') AND content.[selectionType] IN ('combinedSku', 'sku')))
categoryUids"\"uid\"\\s*:\\s*\\{\"id\"\\s*:\\s*\""
Dispatcher
패턴을 사용하여 내부 메모리에서 캐시를 지웁니다.
- 해당 데이터(하위 범주 페이지 포함)에 대한 범주 페이지 캐시 지우기
- 해당 범주가 있는 모든 PDP 페이지 지우기
- 다음 쿼리를 기반으로 캐시를 지웁니다.
SELECT content.[jcr:path] FROM [nt:unstructured] AS content<br>WHERE ISDESCENDANTNODE(content,'{storePath}')<br>AND ((content.[categoryId] in ('category1','category2')<br>AND content.[categoryIdType] in ('uid'))<br>OR (content.[category] in ('category1','category2') AND content.[categoryType] in ('uid')))
regexPatternscacheNamesinvalidateAll이 표에서는 모든 API 호출에서 전달해야 하는 필수 속성을 보여 줍니다.
storePath/content/venia/us/en).invalidateType.의 조합과 함께 제공되어야 합니다.샘플 API 요청 sample-request
curl --location 'https://author-p10603-e145552-cmstg.adobeaemcloud.com/bin/cif/invalidate-cache' \
--header 'Content-Type: application/json' \
--header 'Authorization: ******' \
--header 'Cookie: private_content_version=0299c5e4368a1577a6f454a61370317b' \
--data '{
"productSkus": ["VP01", "VT10"], // This will clear cache for the corresponding pages related with mentioned skus.
"categoryUids":["Mjk="], // This will clear cache for the corresponding pages related with mentioned categories.
"regexPatterns":["\"uid\"\\s*:\\s*\\{\"id\"\\s*:\\s*\"(Mjk=)\"", "\"sku\":\\s*\"(VP02|VP03)\""],
"cacheNames": ["venia/components/commerce/product"], // If this been added then it will clear respective caches for the corresponding storepath
"storePath": "/content/venia/us/en"
}'
확장성 clear-cache-extensibility
이 기능은 핵심 기능을 제공할 뿐만 아니라 확장성을 제공하여 개발자가 필요에 따라 핵심 기능을 구축하고 맞춤화할 수 있도록 합니다.
기존 속성 확장 existing-attribute
기존 특성 기반 기능(예: categoryUids)에서 현재 다루지 않는 캐시를 지워야 하는 경우 이 참조 파일을 참조하여 새 패턴을 추가하고 현재 구현이 처리하는 범위를 넘어 캐시에서 지워야 하는 추가 invalidatePaths을(를) 정의할 수 있습니다.
새 사용자 지정 속성 추가 new-custom-attribute
예를 들어 캐시를 지우기 위해 기존 속성을 사용하지 않으려면 고유한 속성을 만들고 해당 기능을 정의할 수 있는 유연성을 갖습니다.
-
AEM의 내부 메모리(graphql 응답)에서 캐시만 지우면 이 참조를 따라야 합니다.
-
내부 메모리 및 디스패처 캐시에서 캐시를 지워야 하는 경우 이 참조를 따라야 합니다.
note note NOTE null메서드에 대해getPatterns()을(를) 반환하면 내부 지우기 캐시를 무시할 수 있습니다.