뷰가 코어 캐싱 메커니즘을 통해 캐시됩니까? 아니면 각 뷰에서 캐싱을 직접 설정해야합니까?


23

각보기마다 캐시 설정이 있습니다. 이것을 설정해야합니까? 또는 / admin / config / development / performance의 핵심 캐싱 메커니즘이 자동으로이 중 일부를 수행하며 뷰의 이러한 "추가 설정"은 drupal core의 기본 캐싱 동작을 무시하려는 경우입니까?

여기에 이미지 설명을 입력하십시오


이 정확한 질문이 궁금합니다. 뷰 특정 캐시 설정이 Drupal Core 성능 캐싱 설정보다 우선합니까? 논리적으로, 나는 그것이 사실 일 것이라고 생각할 것이지만, 반드시 가정 할 수는 없습니다.
David Csonka

나는 이것에 대한 현상금을 시작했다. 나는 이것을 정말로 더 잘 이해하고 싶어하기 때문이다.
David Csonka

답변:


38

무엇 : 코어 성능 캐시 저장하고하면 URL의 캐시 ID로 전체 렌더링 된 페이지를 제공합니다. 뷰 캐싱은이를 넘어서 뷰 출력 만 캐시합니다.

이유 : 로그인 한 사용자에게 좋습니다. 페이지의 다른 블록은 더 역동적 일 수 있지만 뷰는 모든 사용자에 대해 매번 쿼리를 실행할 필요가 없습니다. 캐시 수명이 만료되면 페이지 캐시를 생성하는 가끔 발생하는 사용자 만 있습니다.

설정 : "렌더링 된 출력"을 쿼리보다 최신 상태로 유지하면 콘텐츠를 새로운 것으로 표시하는 데 유용합니다. 그렇지 않으면 일치시킵니다.

큰 그림 : Drupal은 서버를 사용하여 페이지를 동적으로 제공하여 PHP로 페이지를 작성하고 데이터베이스 (또는 인 메모리 캐시)에 액세스합니다. 이를 통해 멋진 기능과 컨텐츠 편집기 속도가 가능하지만 캐싱을 이해하고 올바르게 수행해야합니다.

모듈!

콘텐츠 편집시 뷰 캐시를 지우는 멋진 Views Content Cache 모듈도 있습니다. 더 나아가고 싶다면 캐시 동작 도 확인하고 싶을 수도 있습니다 . 규칙 을 미세 조정하는 것이 좋습니다 .

또한 Blockcache Alter를 사용하면 사이트의 각 블록에 대해 "역할 당", 페이지, 사용자 등의 캐싱 옵션을 설정할 수 있습니다.

페이지 관리자패널을 추가 할 수도 있습니다 . 이를 통해 "사용자 별", "역할 당"또는 기타 여러 유용한 구성 설정과 같은 흥미로운 작업을 수행 할 수 있습니다. 나는 개인적으로 패널을 피하지만.

문서 : 캐싱 및 성능에 대한 일반적인 내용 은 Drupal.org 페이지를 참조하십시오 .


이 답변은 정말 좋습니다. 투표권이 있습니다. 페이지 관리자 및 패널에 섹션을 추가했으며 이제 대부분 답변이 완료되었습니다.
Letharion

뷰 특정 캐싱이 작동하려면 핵심 성능 "블록 캐싱"을 사용해야합니까?
David Csonka

Page manager / Panels에 대한 정보를 추가해 주셔서 감사합니다. 이에 대한 현상금을 추가 한 후 Mini-panels 캐싱에 대해서도 궁금했습니다. 미니 패널 "간단한 캐싱"을 적용하기 위해 핵심 성능 "블록 캐싱"이 무시되는지 또는 활성화되어야하는지 궁금했습니다.
David Csonka

1
블록 캐싱은 실제로 페이지 캐쉬와 같은 뷰 캐싱 설정에 관계없이 블록 출력을 캐싱합니다. 12 시간 동안 로그 아웃 된 페이지 캐시 수명이있는 경우 해당 페이지가 다시 렌더링되지 않기 때문에보기 캐시는 중요하지 않으며 캐시에서 제공됩니다.
doublejosh

1
반대로 코어 블록 캐싱을 활성화하면 Drupal이 전체 ​​사이트 전체에서 모든 블록에 동일한 캐싱 조건을 적용합니다. Core Drupal Block Caching이 Views Block 캐싱 설정보다 우선 순위가 높기 때문에? 일관된 방식으로 새로 고쳐야 할 콘텐츠가없는 경우에는 좋은 시나리오처럼 보입니다.
David Csonka

4

뷰는 Drupal 캐시 API를 사용하지만 일반적인 Drupal 페이지 / 블록 캐시와 관련이없는 자체 캐시를 생성합니다.

뷰는 렌더링 된 뷰 자체와 함께 뷰 정의 자체를 캐시합니다. 렌더링 된 뷰는 쿼리 결과 또는 뷰의 실제 HTML이라는 두 가지 방식으로 캐시 될 수 있습니다. 일반적으로 출력 된 HTML이 가장 효과적이기 때문에 출력 된 HTML을 캐시하려고합니다. 로그인 한 사용자를 기반으로 출력을 변경하려는 경우 쿼리 캐싱도 매우 효과적 일 수 있습니다.

뷰가 캐시를 저장하는 데 사용하는 테이블은 다음과 같습니다.

  • cache_views
  • cache_views_data

따라서 admin / config / development / performance에서 Drupal Core Block 캐싱 설정을 비활성화 할 수 있지만 특정 Views 표시 블록 캐시를 개별적으로 활성화하고 해당 Views 블록 캐시가 제대로 작동하도록 할 수 있습니까?
David Csonka

1
@DavidCsonka 네, 그렇게 할 수 있습니다. 블록을 캐싱하는 것이 뷰를 캐싱하는 것보다 효과적이지만 작은 마진으로 만 가능합니다.
googletorp

아, 그거 알아요. 그러나 Views 캐싱 설정 만 사용하면 Views 블록이 캐시되는 방식을보다 정확하게 제어 할 수 있습니까? 코어 블록 캐싱을 대신 사용하면 기본적으로 내 사이트의 모든 블록에 하나의 캐싱 설정 세트가 적용됩니까? 옳은?
David Csonka

1
뷰 캐싱 (블록 또는 페이지)을 사용하면 결과 목록 세트의 캐싱을 제어 할 수 있습니다. 블록 캐싱은 전체 블록 출력에 관한 것입니다. 예, 코어 블록 캐싱은 사이트 전체에서 설정되지만 블록 캐시 변경을 사용하여 블록별로 매우 세밀하게 변경할 수 있습니다.
doublejosh

3
@doublejosh Drupal 7에서는 사이트 전체, 역할, 페이지 당 블록 캐시 작동 방식을 정의 할 수 있으며 페이지 사용자는 내가 생각하는 옵션입니다. 더 높은 수준에서 캐싱하기 때문에 성능이 더 효과적입니다.
googletorp

3

노출 된 폼이있는 뷰를 제외한 모든 뷰 (쿼리 결과 및 출력)를 자동으로 캐시하는 뷰 캐시 깡패 라는 흥미로운 모듈이 있습니다 . 이 모듈을 사용하면 캐싱에서보기를 수동으로 제외 할 수도 있습니다. 이를 통해 중심점에서 모든 뷰 (제외 된 뷰 제외)에 대해 캐싱을 설정할 수 있습니다.


2

Drupal 7은 페이지 캐싱을 제공하지만 페이지 캐싱은 익명 사용자에게만 작동하며보기를 캐시하지 않습니다.

뷰 캐싱은 익명 사용자와 로그인 한 사용자 모두에게 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.