2016-07-01 13 views
1


"월의 팁"을 보여주는 TYPO3 플러그인이 포함 된 페이지가 있습니다. 각 달의 시작/끝 날짜가있는 목록 모듈에 항목을 채 웠습니다.TYPO3 페이지 캐시 수명을 정확한 월 (31 일 제외)로 설정하십시오.

캐시를 사용하지 않도록 설정하거나 수동으로 플러시하거나 지난 달 팁을 계속 표시해야합니다.
페이지가 캐시되기를 원하지만 캐시는 매월 1 일까지만 유효합니다. 백그라운드에서 페이지 수명을 "1 개월"로 설정하면 실제로는 2678400 초 (31 일)의 수명이 설정되며 31 일보다 짧은 기간에는 작동하지 않습니다. 아니면 현재 달의 실제 길이를 계산하는 기능이 이미 있습니다!? 나는 TypoScript에서 사용할 수 cache.lifetime가 알고

(나는. 그것을 테스트하기 위해 전체 달 기다릴 수 없어)하지만, 당신은 단지 (초 양)을 정수을 설정할 수 있습니다 "무제한"(만기 없다 flush 될 때까지), "default"(config.cache_period에서 구성됨) 또는 stdWrap.

마지막으로 생성 된 캐시 datetime이 응답의 "Date"헤더를 통해 전송된다는 것을 알고 있습니다. 그래서 TYPO3는이 타임 스탬프를 어딘가 알고 있어야합니다.

<?php 
    $dateStart = new DateTime($pageLastCreated_whencever); 
    $dateEnd = new DateTime(); 
    $dateEnd->modify('first day of +1 month'); 
    $dateDiff = $dateStart->diff($dateEnd); 
    return $dateDiff->format('%s'); // equals cache lifetime 
?> 

사람이 올바른 방향으로 날 밀어 수

:

그래서 내가 좋아하는 뭔가를해야?
내가 미리 ...하지만, 사용자 기능을 사용하는 것을 방지하기 위해


감사합니다 사랑합니다.

답변

0

때때로 TYPO3에서 캐시를 삭제해도 문제가되지 않습니다.

config.cache_clearAtMidnight = 1을 사용하는 것이 좋으므로 매월 1 월에 업데이트가 표시되도록하십시오. 그런 다음 지우는 작업을 사용하여 지우기 직후에 캐시를 다시 작성할 수 있습니다.

편집

나는 워드 프로세서를 통해 비트를보고, 무엇을 당신이 할 확실히 수있는 것은 the dayofmonth 두 개의보다 작은 경우 확인하는 typoscript 조건에 cache_clearAtMidnight을 래핑하는 것입니다.

귀하의 페이지 설정으로 이동하는 전체 타이포 스크립트입니다. PHP가 필요하지 않습니다.

[dayofmonth < 2] 
    config.cache_clearAtMidnight = 1 
[global] 
+0

팁 주셔서 감사합니다.하지만 실제로 다음 달 초까지 캐시 수명의 자동 연산을 어떻게 달성합니까? 샘플 코드가 실제로 작동하는지 (그리고 TypoScript로 어떻게 처리하는지) 또는 마지막 페이지 생성 날짜를 얻을 수 있는지 여부는 알 수 없습니다. – Seika85

+0

답변을 업데이트했습니다. 평생 걱정하지 마십시오. 페이지는 지울 때까지 캐시됩니다. –

+0

예를 들어 보겠습니다. \t 2016-07-31 23:59의 2016-08-01 00:00입니다. 그래야만 조건이 유효하며 제안한 구성이 설정됩니다.그러나 자정은 끝났어. 대신 캐시가 2016-08-02 00:00에 삭제되었음을 의미하지 않습니까? – Seika85

0

캐시 시간을 초 단위로 확인했습니다. 유일한 해결책은 사용자의 필요에 따라 캐시를 지우는 사용자 정의 스케줄러 태스크를 사용하는 것입니다.

+0

페이지 당 개별 캐시 수명을 어떻게 설정하고 스케줄러가 어떻게 인식하고 해석합니까? – Seika85

+0

그 논리는 100 %까지입니다. "페이지 ID"및 "수명"열이있는 간단한 테이블을 만들고 요구 사항이 충족되면 모든 호출을 확인하십시오. 끝나면 cachemanager를 호출하여 해당 페이지를 지울 수 있습니다. –

+0

그래서 실제로 각 페이지의 캐시 수명을 채우고 유지 관리하기 위해 일종의 BackEnd 모듈 (관리 도구)을 설정해야합니다. 또는 편리하게 설정할 수 있도록 페이지 구성을 확장하는 확장 기능을 작성해야합니다. --- 사용자 기능을 사용하고 싶지는 않다고 말한 것처럼. 이제 전체 확장을 작성해야합니다. 다른 모든 것이 실패 할 경우 적어도 고려해야합니다 ... – Seika85