W3 총 캐시-프로그래밍 방식으로 캐시 새로 고침 [닫기]


21

WordPress에 Digg와 같은 웹 사이트를 만들고 있습니다.

W3 Total Cache를 설치 한 후 게시물 당 투표 수 (및 유권자 ID)와 같은 특정 요소가 없어야하더라도 (적어도 사용자가 기사를 투표 한 후에는) 캐시되지 않는 것으로 나타났습니다. 페이지의 특정 요소가 캐시되는 것을 막을 수 없다고 가정하므로 프로그래밍 방식으로 페이지 캐시 새로 고침을 트리거하는 것으로 생각했습니다.

어떤 제안?

답변:


21

캐시를 비우려면 다음을 수행하십시오. 플러그인에는 해당 기능이 있습니다.

<?php 

flush_pgcache()  //page cache
flush_dbcache()  // database cache
flush_minify()  // minify cache
flush_all() //all caches

?>

다음과 같이 호출하면됩니다.

<?php 
 $w3_plugin_totalcache->flush_all();
?>

기본적으로 "캐시 새로 고침 프로그래밍 방식"이라는 제목의 질문에 대한 답변입니다.


12
$ w3_plugin_totalcache 객체를 인스턴스화하는 방법을 명시 적으로 정의 할 수 있습니까?
adamdport

3
부분적으로 도움이 되었습니까? 그 변수를 어떻게 인스턴스화 했습니까?
thephpdev

10

W3 Total Cache는 조각 캐싱을 지원합니다. FAQ에서 :

How do I implement fragment caching? 

Edit your templates to with the following syntax to ensure that dynamic features remain so:

Example 1:
<!-- mfunc any PHP code --><!-- /mfunc -->

Example 2:
<!-- mfunc -->any PHP code<!-- /mfunc -->

Example 3:
<!--MFUNC           -->
                                      echo rand();
<!--/mfunc -->

Example 4:
<!-- mclude path/to/file.php --><!-- /mclude -->

Example 5:
<!-- mclude -->path/to/file.php<!-- /mclude -->

고마워 라스트. 그러나 위의 예제를 사용하면 구문 분석 오류 : 구문 오류, 예기치 않은 '<'
user1567

@ user1567 <?php ?>태그 열기 / 닫기 태그 가 일치하지 않을 수 있습니다 . 나는 이것을 아직 사용하지 않았으므로 보여줄 실용적인 발췌문이 없습니다.
Rarst

우선, 캐싱하지 않고 functions.php를로드하고 싶습니다. functions.php의 다음 코드는 위의 오류를 유발했습니다. <? php <!-mclude-> require_once (functions2.php) <!-/ mclude->?> 코드에 어떤 문제가 있습니까?
user1567

1
같은 @ user1567 예에 따라 그것이 있어야 뭔가 ?><!-- mclude -->functions2.php<!-- /mclude --><?php(내가 :) 생각
Rarst

단편 캐싱을 수행 할 수 없습니다. 내 문제는 여기에 설명되어 있습니다 : stackoverflow.com/questions/31125413/…
JackTheKnife 2016 년

10

w3tc v0.9.3의 게시물 ID로 단일 페이지를 플러시하려면 다음과 같이 작동했습니다.

if (function_exists('w3tc_pgcache_flush_post')){
 w3tc_pgcache_flush_post($post_id);
}

1
이 코드를 어디에 두시겠습니까? 이것은 모든 페이지로드 (해당 ID에 대해)에서 실행되는 것처럼 보입니다. 완전히 캐싱하는 것을 막을 방법이 없습니까?
s_ha_dum

@s_ha_dum이 코드를 사용할 수있는 후크를 찾을 수 있습니까?
Prafulla Kumar Sahu

플러그인이로드 된 후 사용자 지정 코드 / 플러그인이 연결하는 이벤트가 실행되는 경우 추가 후크가 필요하지 않습니다 (일반적인 경우). 사용 가능한 모든 기능은 w3-total-cache-api.phpW3TC의 플러그인 디렉토리에 있습니다.
Walf

감사합니다. 2018 년 12 월에 도움이되었습니다. 클라이언트가 특정 페이지 (에이전트를 사용할 수있을 때 표시되는 설정 페이지)를 방문하면 홈페이지 캐시를 플러시하는 방법이 필요했습니다. 이것은 특정 페이지에 매우 유용하지만 모든 캐시 소거와 같이 모든 캐시를 플러시하는 기능이 있으면 좋을 것입니다!
Jordan Carter

9

Bainternet의 솔루션이 저에게 효과가없는 것 같습니다.

플러그인 내 에서이 대체 스 니펫을 성공적으로 사용하고 있으며 admin_init 작업에 로드되었습니다 .

// Clear all W3 Total Cache
if( class_exists('W3_Plugin_TotalCacheAdmin') )
{
    $plugin_totalcacheadmin = & w3_instance('W3_Plugin_TotalCacheAdmin');

    $plugin_totalcacheadmin->flush_all();

    echo __('<div class="updated"><p>All <strong>W3 Total Cache</strong> caches successfully emptied.</p></div>');
}

잘하면 이것은 누군가를 도울 수 있습니다.


kevinlearynet의 솔루션이 W3 Total Cache 버전 0.9.2.4에서 작동 함을 확인할 수 있습니다. 그것은을 위해 파산 내 플러그인 이 업그레이드 후, 이것은 치료를 작동합니다. 고맙습니다! 폴

2
커맨드 라인에서 이것을 실행하려고합니다. W3_Plugin_TotalCacheAdmin 클래스를 어떻게로드했는지 물어볼 수 있습니까? 나는 wp-load.php를 요구하지 않았다.
adamdport

5

위의 어느 것도 내 플러그인에서 효과가 없었습니다. 그러나 이것은 효과가 있었다! w3tc 버전 0.9.2.4에서 작동하는 것으로 확인되었습니다.

if (function_exists('w3tc_dbcache_flush')) { w3tc_dbcache_flush(); }

나는 "$ wpdb-> get_results ("SELECT sb_settings. f_fb_app_id, sb_settings. f_fb_secretFROM sb_settings");"를했고 f_fb_secret과 f_fb_app_id 값이 매번 동일하다는 것에 놀랐습니다. 분명히 쿼리 결과를 캐시하는 것은 w3tc였습니다. 그래서 sb_settings 테이블에 대한 수정 페이지에 dbcache 플러시를 추가했습니다.

페이지 캐시를 지우려면 w3tc_pgcache_flush를 대신 사용하십시오.


downvoter가 왜 downvoted했는지 말하고 싶습니다. 내 답변에 문제가 있습니까?
Elrinth

0

이 스 니펫을 사용하여 캐싱의 설정 여부에 관계없이 PHP가 실행되도록하십시오. 예, 함수를 두 번 작성 / 호출해야합니다.

<!-- mfunc echo 'caching ON'; --><?php echo 'caching OFF'; ?><!-- /mfunc -->


(제 생각에) 이것이 작동하는 방식입니다.

  • mfunc 조건은 php 태그를 대체 합니다.
  • 캐싱이 OFF 인 경우 mfunc 주석 내의 php가 마크 업에 HTML 주석으로 나타납니다. <!-- mfunc echo "hello?"; -->사람들이 PHP를 보는 것이 얼마나 행복한 지에 따라이 점을 명심하십시오 (캐싱이 해제 된 경우에만 해당).
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.