WooCommerce: Ajax 장바구니 조각을 비활성화하는 이유 및 방법
게시 됨: 2019-07-22여기 있는 이유는 WooCommerce 웹사이트가 느리고 " /?wc-ajax=get_refreshed_fragments " URL이 지연 및 서버 로드(스파이크)를 생성하는 이유가 궁금하기 때문입니다.
게다가 WooCommerce Ajax Cart Fragments(특정 플러그인 및 성능 플러그인 옵션 포함)에 대한 온라인 문헌이 너무 많으며 비활성화해야 하는지 여부와 방법을 이해하기 전에 빠르게 배우고 싶습니다.
Pingdom 및 GTMetrix와 같은 성능 최적화 도구는 종종 이 작은 WooCommerce 기능을 비난합니다. 신중하게 비활성화하면 속도, 페이지 로드 및 궁극적으로 판매 전환율을 높일 수 있습니다.
여기 당신이 알아야 할 모든 것이 있습니다.
- WooCommerce Ajax 장바구니 조각이란 무엇입니까?
- WooCommerce Ajax 장바구니 조각을 비활성화하는 이유는 무엇입니까?
- WooCommerce Ajax 장바구니 조각을 비활성화하는 방법은 무엇입니까?
- 최종 생각: WooCommerce Ajax 장바구니 조각 예 또는 아니오?
WooCommerce Ajax 장바구니 조각이란 무엇입니까?
하지만 먼저 Ajax가 무엇인지 모르는 분들을 위해
웹 개발에서 Ajax( AJAX = Asynchronous JavaScript And XML )는 간단히 말해서 웹 사이트 페이지를 새로 고치지 않고도 기능을 실행할 수 있는 웹 개발 기술입니다.
WooCommerce Shop 페이지의 "Ajax Add to Cart"에 대해 생각해 보십시오. 페이지를 강제로 다시 로드하지 않고도 장바구니에 제품을 추가(및 업데이트)할 수 있습니다. Ajax는 백그라운드에서 실행되며 서버와 "비동기적으로" 통신합니다.
이제 명확해 졌으므로 WooCommerce Ajax Cart Fragments가 무엇이며 URL " yoursite.com/?wc-ajax=get_refreshed_fragments "가 무엇을 나타내는지 알아보겠습니다.
간단히 말해서, 소규모 사이트, 심지어 WooCommerce가 아닌 페이지에서도 WooCommerce는 장바구니 세부 정보를 "가져오기" 시도하여 무언가가 완료되거나 완료되지 않을 때마다 장바구니를 "재계산"할 준비가 될 수 있도록 합니다. 주어진 WordPress 페이지에서.
이를 통해 WooCommerce는 Cart 위젯을 업데이트된 상태로 유지하고 Cart 업데이트가 필요할 수 있는 Ajax Add to Cart 이벤트를 즉시 "수신"할 수 있습니다 .
기본적으로 WooCommerce는 " /?wc-ajax=get_refreshed_fragments "를 호출하여 장바구니 항목과 장바구니 합계를 비동기식으로 업데이트합니다. 즉, 방문하는 웹사이트 페이지를 새로 고칠 필요가 없습니다.
Ajax는 훌륭하고 모든 것이지만 이 작은 기능으로 인해 발생할 수 있는 성능 영향과 플러그인 충돌을 과소평가하지 마십시오. 다음 섹션으로 이동합니다.
WooCommerce Ajax 장바구니 조각을 비활성화하는 이유는 무엇입니까?
웹사이트의 모든 페이지에서 카트 업데이트를 만들기 위해 WooCommerce는 매번 이 Ajax 기능을 실행합니다.
정보 페이지에서도. 제품이 없는 경우에도 홈페이지에 있습니다. 연락처 양식만 있는 경우에도 연락처 페이지에 있습니다.
테마가 WooCommerce 장바구니 드롭다운 위젯을 제공하지 않고 특정 웹사이트 페이지의 장바구니에 추가할 수 있는 제품이 없는 경우 전체 Ajax 기능을 제거하는 것이 좋습니다.
또한 WooCommerce 설정에서 장바구니에 제품을 추가한 후 사용자를 장바구니로 리디렉션하도록 선택하는 경우 페이지 리디렉션(장바구니 페이지로)을 확실히 하게 되므로 Ajax 장바구니 조각을 활성화하는 것은 매우 무의미합니다.
이상적으로는 " /?wc-ajax=get_refreshed_fragments "가 실행되어야 하는 유일한 장소는 고객 이 장바구니에 추가할 수 있고 동적 장바구니 위젯을 사용하려는 페이지와 WooCommerce 아카이브입니다.
예를 들어 카테고리 페이지에 Add to Cart 버튼이 있고 페이지를 새로고침하지 않고도 Cart 위젯이 업데이트되기를 원하는 경우(Ajax가 장바구니에 추가를 활성화한 경우) " /?wc-ajax=get_refreshed_fragments " 가 필요합니다. 활동적인.
게다가, 장바구니 페이지 에서 페이지를 새로 고치지 않고도 수량을 변경하거나 항목을 제거할 수 있으며, 거기에서 장바구니 위젯도 그에 따라 업데이트되기를 원합니다(그러나 여기서 진짜 질문은: 장바구니 페이지에 장바구니 위젯이 그대로 있는 이유입니다 . 의미가 없습니까? ). 따라서 장바구니 페이지에서 "/?wc-ajax=get_refreshed_fragments" 도 활성화해야 합니다. 그렇지 않으면 장바구니를 업데이트하면 위젯이 새로 고쳐지지 않습니다.
결론:
- 테마 에 동적 헤더 장바구니 위젯이 없는 경우 "/?wc-ajax=get_refreshed_fragments"를 비활성화할 수 있습니다.
- 테마에 동적 헤더 장바구니 위젯이 있지만 이동 중에 장바구니 위젯 콘텐츠를 표시하는 데 관심이 없다면 "/?wc-ajax=get_refreshed_fragments"를 모든 곳에서 비활성화할 수 있습니다.
- 장바구니 위젯 기능을 활성 상태로 유지하려면 Ajax 장바구니에 추가 기능(WooCommerce 제품 아카이브) 또는 장바구니 업데이트 기능(장바구니 페이지)이 없는 페이지에서만 "/?wc-ajax=get_refreshed_fragments"를 비활성화해야 합니다.
WooCommerce Ajax 장바구니 조각을 비활성화하는 방법은 무엇입니까?
이제 카트 조각이 무엇인지, 왜/언제 제거해야 하는지 이해했으므로 약간의 코딩에 들어갈 수 있습니다.
물론 이를 위한 플러그인이 있습니다. 그러나 몇 줄의 PHP로 이와 같은 기능을 달성할 수 있다면 코딩 방법을 모르더라도 다른 솔루션을 찾는 것은 의미가 없습니다.
그러나 먼저 WooCommerce가 이 Ajax 호출을 추가하는 방법을 살펴보겠습니다(개발 용어로 "이 스크립트를 대기열 에 넣는 방법"이라고 함).
먼저 " wc-cart-fragments " 스크립트는 "register_scripts()"라는 함수로 설명됩니다. /assets 폴더에서 JS 스크립트를 호출하고 JQuery와 쿠키를 활성화해야 합니다.
'wc-cart-fragments' => array(
'src' => self::get_asset_url( 'assets/js/frontend/cart-fragments' . $suffix . '.js' ),
'deps' => array( 'jquery', 'js-cookie' ),
'version' => WC_VERSION,
),
동일한 파일에서 " wc-cart-fragments "가 호출되는 시간입니다.
self::enqueue_script( 'wc-cart-fragments' );
"enqueue_script()" 함수를 보면 " wc-cart-fragments " 스크립트가 먼저 등록된 다음 WordPress 문서(https://developer.wordpress.org/reference/)에 따라 대기열에 추가되었음을 알 수 있습니다. 함수/wp_enqueue_script):
private static function enqueue_script( $handle, $path = '', $deps = array( 'jquery' ), $version = WC_VERSION, $in_footer = true ) {
if ( ! in_array( $handle, self::$scripts, true ) && $path ) {
self::register_script( $handle, $path, $deps, $version, $in_footer );
}
wp_enqueue_script( $handle );
}
무언가가 "대기열에 추가"되면 "대기열에서 빼낼" 수 있습니다 (add_action() 및 remove_action() PHP 함수와 유사).
"인큐" 함수 다음에 "큐에서 빼기" 함수를 호출해야 이미 추가되어 제거할 수 있습니다(따라서 "wc-cart-fragments"가 기본 우선 순위로 큐에 추가되므로 우선 순위 = 11입니다. 10).
의사:
/**
* @snippet Disable WooCommerce Ajax Cart Fragments Everywhere
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @compatible WooCommerce 3.6.4
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_action( 'wp_enqueue_scripts', 'bbloomer_disable_woocommerce_cart_fragments', 11 );
function bbloomer_disable_woocommerce_cart_fragments() {
wp_dequeue_script( 'wc-cart-fragments' );
}
헤더 카트 위젯 이 있는 경우 "드롭다운 카트"가 중단됩니다. 헤더에서 항목 수와 장바구니 합계를 계속 볼 수 있지만 마우스를 가져가면 항목 및 장바구니/체크아웃 버튼이 표시되지 않습니다 .
Business Bloomer에서 장바구니 위젯을 완전히 비활성화했으므로 이 기능을 사용하는 것이 좋습니다.
홈페이지를 최적화하고 다른 웹사이트 페이지에 "wc-cart-fragments"를 남겨두고 싶다면 다음 스니펫을 대신 사용할 수 있습니다.
/**
* @snippet Disable WooCommerce Ajax Cart Fragments On Static Homepage
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @compatible WooCommerce 3.6.4
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_action( 'wp_enqueue_scripts', 'bbloomer_disable_woocommerce_cart_fragments', 11 );
function bbloomer_disable_woocommerce_cart_fragments() {
if ( is_front_page() ) wp_dequeue_script( 'wc-cart-fragments' );
}
최종 생각: WooCommerce Ajax 장바구니 조각 예 또는 아니오?
Ajax Cart Fragments를 비활성화하면 웹사이트 속도가 "향상될 수" 있지만 몇 가지 문제가 "발생할 수" 있습니다. 주로 드롭다운 장바구니 위젯을 계속 사용하려는 경우입니다.
따라서 이 섹션에서는 "/?wc-ajax=get_refreshed_fragments"와 관련하여 다른 사람들이 발견한 내용을 보고 싶습니다.
정말 단점보다 장점이 더 많나요? 웹사이트 페이지 속도가 정말 증가합니까? 장바구니 조각을 비활성화할 가치가 있습니까?
스포일러 경고: 에 따라 다릅니다 .
CommerceGurus의 Colm Troy는 Ajax Cart Fragments(및 그의 기사에서 읽어야 할 다른 비트: https://www.commercegurus.com/guides/speed-up-woocommerce/)를 깊이 테스트했으며 그의 가이드에서 다음을 발견했습니다. 저것:
... "/?wc-ajax=get_refreshed_fragments" 요청 시간은 448ms가 소요되며 이는 현재로서는 가장 느린 http 요청입니다.
크고 최적화되지 않은 데이터베이스가 있는 일부 느린 서버에서는 이 요청을 실행하는 데 1-2초 이상 걸릴 수 있습니다.
좋은 소식은 이 요청이 비차단이고 DOM이 로드된 후에 잘 실행되기 때문에 일반적으로 인지된 로드 시간에 영향을 미치지 않는다는 것입니다(그러나 완전히 로드된 시간에는 확실히 영향을 미치고 GPSI가 Time과 같이 걱정하는 몇 가지 사항을 손상시킬 수 있습니다. 대화형 및 첫 번째 CPU 유휴).
그는 또한 최근에 나에게 이렇게 말했습니다.
저는 WooCommerce 초보자가 장바구니 위젯이 나타날 수 있는 모든 다양한 시나리오를 완전히 생각하지 않았기 때문에 조각을 제거하는 사이트를 종종 깨뜨리는 결과를 초래하므로 주의해서 진행해야 한다는 결론에 도달했습니다.
로드 스파이크와 수많은 트래픽이 있는 WooCommerce 매장에서 우리가 가장 먼저 하는 일은 카트 조각을 대기열에서 빼내고 카트 위젯을 제거하고 고객이 카트에 추가할 때 카트로 리디렉션되도록 하는 것 입니다.
멋지고 간단하며 빠르게 유지
대화를 계속하고 싶으신가요? 의견에서 피드백, 테스트 및 의견을 공유하십시오.