Files
Gnuboard7/app/Seo/Contracts/SeoCacheManagerInterface.php
2026-05-11 11:29:41 +09:00

65 lines
1.8 KiB
PHP

<?php
namespace App\Seo\Contracts;
interface SeoCacheManagerInterface
{
/**
* 캐시된 SEO HTML을 조회합니다.
*
* @param string $url 요청 URL
* @param string $locale 로케일
* @return string|null 캐시된 HTML 또는 null
*/
public function get(string $url, string $locale): ?string;
/**
* SEO HTML을 캐시에 저장합니다.
*
* @param string $url 요청 URL
* @param string $locale 로케일
* @param string $html 렌더링된 HTML
*/
public function put(string $url, string $locale, string $html): void;
/**
* 레이아웃명과 함께 SEO 캐시에 렌더링된 HTML 을 저장합니다.
*
* `invalidateByLayout()` 동작을 위해 레이아웃명을 함께 저장합니다.
*
* @param string $url URL
* @param string $locale 로케일
* @param string $html 렌더링된 HTML
* @param string $layoutName 레이아웃명 (빈 문자열 허용)
*/
public function putWithLayout(string $url, string $locale, string $html, string $layoutName): void;
/**
* 특정 URL 패턴의 SEO 캐시를 무효화합니다.
*
* @param string $urlPattern URL 패턴 (와일드카드 지원)
* @return int 무효화된 캐시 수
*/
public function invalidateByUrl(string $urlPattern): int;
/**
* 특정 레이아웃의 SEO 캐시를 무효화합니다.
*
* @param string $layoutName 레이아웃명
* @return int 무효화된 캐시 수
*/
public function invalidateByLayout(string $layoutName): int;
/**
* 전체 SEO 캐시를 삭제합니다.
*/
public function clearAll(): void;
/**
* 캐시된 URL 목록을 반환합니다.
*
* @return array<string>
*/
public function getCachedUrls(): array;
}