질문을 삭제하지 말아주세요.!
 
1
0
-1

안녕하세요. 캐시부분이 필요하여 문서화해도 도저히 답을 찾을수가 없네요.


페이지 자체를 캐시하는 부분은 도저히 찾지를 못하고있습니다.

물론 깃허브에 full page cache 관련하여 자료가 많이 나옵니다.


자체 라라벨은 제공하지 않는걸까요?

만약 제공하지 않는다면 왜! page cache 부분은 제공하지 않을까요..


( 옆동네 c.i 는 풀페이지 캐시 부분을 자체적으로 제공하는데 말이져..ㅠㅠ)


https://github.com/search?o=desc&q=page-cache&s=stars&type=Repositories&utf8=%E2%9C%93

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      캐시에는 여러 레이어가 있습니다.

      1) 우선 opcache에 의해서 PHP 코드가 Bytecode로 캐시됩니다. 코드 변경이 없다면, 인터프리터가 전체 코드를 토큰화하고 Bytecode로 컴파일하지 않고, 캐시된 코드를 실행합니다. 

      2) 라라벨 프로젝트에서 블레이드 파일은 블레이드 엔진에 의해서 캐시됩니다. 블레이드 문법을 PHP 코드로 컴파일하고 캐시해 둡니다. 블레이드 파일에 변경이 없다면, 캐시된 PHP 코드를 그대로 사용합니다.

      3) Chunked Encoding이 아닌 파일은 웹 서버에 의해서 캐시됩니다. 같은 요청이 들어오면, 웹 서버가 304 Not Modified를 반환합니다.


      라라벨은 프런트 컨트롤러(모든 요청이 index.php를 거침)를 사용하고, 웹 서버가 확장자가 php인 파일은 자신이 처리할 수 없어 PHP 런타임에게 처리를 위임할 뿐더러, PHP 런타임이 응답할 HTTP 본문 크기를 웹 서버가 미리 예측할 수 없기에, 3) 시나리오는 없습니다.


      질문하신게 3)번 맞죠? Etag 또는 Last-Modified-Since 등의 헤더를 이용해서 HTTP 본문 전체를 캐싱하는 시나리오요. 컴포저 패키지가 있는 지는 안 찾아 봤는데요, 직접 구현하셔야 합니다. 아래 링크를 참고하세요.

      http://l5.appkr.kr/lessons/52-caching.html

      https://github.com/laracasts/matryoshka

      1. 임환현

        상세한 설명 감사드립니다.

        결국은 라라벨은 Page 자체를 HTML 화 시켜, 페이지 전체 캐시하는 기능은 없다는거네요.. 

        답변해주신 링크를 참고하여, 검색 활용을 통해 원하는 답변을 한번 더 찾아봐야겠네요.


        정말 감사합니다.

      CommentAdd your comment...