رفتن به مطلب

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


پست های پیشنهاد شده

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

یک جستجوی اجکس ایجاد کردم ولی می خوام کارایی یا 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;
}

 

لینک به ارسال

سلام

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

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

لینک به ارسال
  • 2 هفته بعد...

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

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

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

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

لینک به ارسال
  • 3 هفته بعد...

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...