resanehwp

بالابردن کارایی جستجوی اجکس

4 پست در این موضوع قرار دارد

سلام به همه دوستان

یک جستجوی اجکس ایجاد کردم ولی می خوام کارایی یا Performance اش رو افزایش بدم

ضمناً این فقط کد اولیه هست و باید مسائل امنیتی مثل nonce و ... بهش اضافه بشه

ممنون میشم دوستان اگر تجربه یا نظری در این زمینه دارن مطرح کنن

با تشکر

کد جی کوئری :

 $(".kani-ajax-search").on('keyup',function(){
            var searchText= $(this).val();
            if (searchText !=='') {
                $.ajax({
                    beforeSend : function () {
                        $(".search-result").empty();
                        $(".search-result").html('<div class="kts-loader-search"></div>');
                        $(".search-result").show();
                        $(".kts-loader-search").show();
                    },
                    type: "post",
                    url: ktss_common_ajax_options.ajaxurl,
                    data: {
                        'action': 'isearch',
                        'searchValue': searchText
                    },
                    dataType: "html",
                })
                .done(function(response){
                    $(".search-result").html(response);
                })
                .fail(function(response){
                    $(".kts-loader-search").hide();
                })
                .always(function(){
                    $(".kts-loader-search").hide();
                });
            } else {
                $(".search-result").empty();
                $(".search-result").hide();
            }
    });

 

کد پی اچ پی :

add_action('wp_ajax_isearch','isearch');
add_action('wp_ajax_nopriv_isearch','isearch');
function isearch(){
	if ($_SERVER["REQUEST_METHOD"]=="POST") {
		if (isset($_POST['searchValue'])) {
			global $wpdb;
			$sql = "SELECT ID,post_title FROM {$wpdb->prefix}posts ".
			" WHERE  (`post_type`='product' OR `post_type`='post' ) AND ( `post_title` LIKE '%".$_POST['searchValue']."%' OR " .
			" `post_title` LIKE '%".$_POST['searchValue']."%' ) LIMIT 11" ;

			$result=$wpdb->get_results($sql,'ARRAY_A');
			if(count($result)) {
				$result = generate_search_result($result);
			} else {
				$result ='<div class="kts-notfound">' . esc_html__('Nothing Found !', 'kanishop-theme') . '</div>';
			}
			
			echo $result;
			wp_die();
		}
		wp_die();
	}
	wp_die();
}

function generate_search_result($search_result){
	$counter=1;
	$elements = "<div class='search-wrapper-item'>";
	foreach ($search_result as $item) {
		if ($counter > 10 ) {
			break;
		}
		$elements .= '<p class="items">';
		$elements .= '<a href="'.get_permalink($item['ID']).'">'.$item['post_title'].'</a>';
		$elements .= '</p>';
		$counter++;
	}
	$elements .= "</div>";
	if ($counter > 10) {
		$elements .= "<div class='search-more'><a href=''>".esc_html__("See More Result", "kanishop-theme")."</a></div>";
	}
	return $elements;
}

 

0

به اشتراک گذاری این پست


لینک به پست

سلام

از چه نظر بهینه تر بشه؟

بصورت کلی بنظرم کد مورد خاصی نداره که نیاز به بهینه تر شدن داشته باشه.

0

به اشتراک گذاری این پست


لینک به پست

مرتضی عزیز ممنون از شما

می خوام تعداد درخواست ها کم بشه در صورت امکان

مثلاً اینکه در هنگام تایپ کاربر یکی دو ثانیه وقفه بندازم بهتره یا ...

فکر می کنم می تونه بهتر بشه

0

به اشتراک گذاری این پست


لینک به پست

البته به نظر من این خط کد به صورت زیر باشه بهتره
 

if (searchText !=='')

if (searchText.length>3)

 

1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری