문제

내 사이트를 위해 캐싱을 설정하려고 노력하고 있지만 캐싱이 제대로 작동하는지 여부를 테스트하는 데 어려움이 있습니다. 내 컨트롤러에 다음을 가지고 있습니다.

public function read($id, $slug = null)
{
  $this->cache = Cache::instance();
  $story = $this->cache->get("story".$id);

  if (!$story) {
    $story_model = new Story_Model;
    $story = $story_model->get_story($id);
    if (!$story) throw new Kohana_404_Exception();
    $this->cache->set("story".$id, $story);
  }

  $this->template->content = new View('story');
  $this->template->title = htmlspecialchars($story->title);
  $this->template->content->story = $story;
}

이것은 제대로 작동하며 캐시가 발견되고 있는지 확인할 수도 있고 캐시가 설정된 후 if () 점검이 입력되지 않습니다. 내 혼란은 이것이 캐시 파일을 편집 할 때 왜 변경이보기에 반영되지 않습니까? 예를 들어, 내 캐시는 다음과 같습니다.

O:8:"stdClass":11:{
  s:2:"id";s:3:"636";
  s:5:"title";s:45:"Some Article Title";
  s:4:"link";s:50:"http://www.somesite.com";
  s:8:"category";s:2:"12";
  s:4:"user";s:1:"5";
  s:4:"slug";s:45:"some-article-title";
  s:7:"pubdate";s:19:"2009-08-05 03:57:50";
  s:6:"sticky";s:1:"0";
  s:7:"summary";N;
  s:13:"categorytitle";s:13:"International";
  s:8:"username";s:7:"usernameHere";
}

내가 변경 한 경우 title "일부 기사 제목 파트 2"에 대한 가치와 내보기를 새로 고치면 여전히 기존 제목 이름과 내가 캐시 파일에 대한 변경 사항이 사라집니다.

내가 잘못하고 있는가? 데이터베이스 대신 캐시 파일에 액세스하는지 여부를 어떻게 테스트 할 수 있습니까? 내 구성 파일 내용은 다음과 같습니다.

$config['default'] = array
(
  'driver'   => 'file',
  'params'   => APPPATH.'cache',
  'lifetime' => 1800,
  'requests' => 1000
);
도움이 되었습니까?

해결책

직렬화 된 PHP 객체는 값에 대한 제약 조건을 배치합니다. 다음 줄을보십시오.

s:5:"title";s:45:"Some Article Title";

그만큼 s:5 다음 값에는 5자가 있음을 의미합니다 "T-i-t-l-e". 총 5 개. 다음 가치 s:45 45 개의 캐릭터가 있어야합니다. 당신은 텍스트를 그대로 변경했습니다 "Some Article Title" 여기에 게시했지만 원본에는 총 45 개의 숯이있었습니다.

더 많은 숯을 추가하거나 숯을 빼면 값의 문자열 길이와 int-alal이 묶여있는 관계가 깨질 것입니다. 만약에 s:3, 당신의 줄은 세 숯이 길어야합니다.

값에/빼기/빼기보다는 몇 캐릭터를 변경하십시오. 변화 "Title" 에게 "Ninja" 그런 다음 페이지를 새로 고치십시오.

다른 팁

원래 데이터 저장소에서 데이터를 편집하고 블랙 박스처럼 캐싱을 처리하려고합니다.

데이터베이스를 사용하는 경우 값을 쉽게 편집 할 수 있도록 양호한 데이터베이스 관리자를 얻으십시오. 나는 사용한다 dbvisualizer... 이유를 묻지 마세요.

파일 캐시 드라이버를 사용할 때는 캐시를 지우고 캐싱 코드를 테스트하기 위해 Application/Cache에서 모든 것을 삭제합니다.

캐시 파일을 편집 할 유일한 시간은 실제로 파일 또는 멤버 드라이버를 교체하기 위해 캐싱 시스템을 작성하는 경우였습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top