PDA

View Full Version : سوال: قرار دادن آخرین اخبار، آخرین خبرها، مقالات تصادفی و . . . در پنل های سایت بدون کاهش سرعت سایت



phpweb
دوشنبه 01 فروردین 1390, 23:50 عصر
من می خوام امکان نمایش آخرین اخبار، آخرین خبرها، مقالات تصادف، خبرهای تصادفی، پربازدید ترین اخبار و پربازدید ترین مقالات رو توی پنلهای سایتم رو ایجاد کنم.

برای این کار باید برای هر صفحه از سایتم 6 بار از دیتابیس کوئری گیری کنم.

با توجه به اینکه برای سایر مطالب سایت هم باید کوئری گیری کنم، این مسئله باعث نمی شه که سرعت سایت پایین بیاد؟

شما در این موارد چه کاری برای بهینه کردن سرعت وب سایتتون انجام می دید و چه پیشنهادی برای من دارید؟

tem988
سه شنبه 02 فروردین 1390, 01:04 صبح
سلام چون توی پنله و زیاد لود نمیشه سرعتی کم نمیکنه و به نظر من بهتره برای هر کدوم یک صفحه جدید درست نکنی اینطوری بنویس



if(isset($_REQUEST['hit'])){
$showpost= mysql_query("SELECT * FROM posts ORDER BY hit desc Limit 20");
}elseif(isset($_REQUEST['rand'])){
$showpost= mysql_query("SELECT * FROM posts ORDER BY rand() desc Limit 20");
}elseif(isset($_REQUEST['comment'])){
$showpost= mysql_query("SELECT * FROM posts ORDER BY comment desc Limit 20");
}else{
$showpost= mysql_query("SELECT * FROM posts ORDER BY id desc Limit 20");
}

while ($post=@mysql_fetch_array($showpost)){
echo "<a href='".$post['url']."'>".$post['title']."</a><br>";
}

ghasemweb
سه شنبه 02 فروردین 1390, 01:13 صبح
فکر نکنم به اون اندازه که شما نگرانی دارید باشه سرعت لودینگ بیشتر بستگی به سرعت اینترنت مراجعه کننده داره من فعلا راهی به ذهنم نمیرسه

phpweb
سه شنبه 02 فروردین 1390, 01:20 صبح
فکر نکنم به اون اندازه که شما نگرانی دارید باشه سرعت لودینگ بیشتر بستگی به سرعت اینترنت مراجعه کننده داره من فعلا راهی به ذهنم نمیرسه

منظورم سرعت دیتابیس و سرور سایت خودم هست، نه سرعت لودینگ کاربر.

tem988
سه شنبه 02 فروردین 1390, 01:27 صبح
صفحات ادمین که فقط خودت مدیریت میکنی رو با کوئری های ساده هم بنویسی بسه و فشاری روی دیتابیس نمیاره که سرعت لود دیتابیس یا سرور رو کم میکنه
بیشتر صفحاتی رو باید بهینه کنی که کاربر زیادی صفحه رو درخواست میکنن

phpweb
سه شنبه 02 فروردین 1390, 01:35 صبح
سلام چون توی پنله و زیاد لود نمیشه سرعتی کم نمیکنه و به نظر من بهتره برای هر کدوم یک صفحه جدید درست نکنی اینطوری بنویس



if(isset($_REQUEST['hit'])){
$showpost= mysql_query("SELECT * FROM posts ORDER BY hit desc Limit 20");
}elseif(isset($_REQUEST['rand'])){
$showpost= mysql_query("SELECT * FROM posts ORDER BY rand() desc Limit 20");
}elseif(isset($_REQUEST['comment'])){
$showpost= mysql_query("SELECT * FROM posts ORDER BY comment desc Limit 20");
}else{
$showpost= mysql_query("SELECT * FROM posts ORDER BY id desc Limit 20");
}

while ($post=@mysql_fetch_array($showpost)){
echo "<a href='".$post['url']."'>".$post['title']."</a><br>";
}


کد شما فقط یکی از قسمتها رو توی پنل نمایش می ده. شاید به این دلیل سرعت لود سایت شما پایین نیومده.

اگه بخوایم همه این قسمتها رو توی پنل نمایش بدم باید 6 بار از دیتابیس کوئری گیری کنم، محتویات سایت هم باید از دیتابیس دریافت بشن تعداد کوئری گیری ممکنه به 10 تا یا بیشتر برسه.

در این شرایط سرعت دیتابیس و در نتیجه سرعت سایت در بازدیدهای بالا، کم نمی شه؟

phpweb
سه شنبه 02 فروردین 1390, 01:40 صبح
سلام چون توی پنله و زیاد لود نمیشه سرعتی کم نمیکنه و به نظر من بهتره برای هر کدوم یک صفحه جدید درست نکنی اینطوری بنویس



if(isset($_REQUEST['hit'])){
$showpost= mysql_query("SELECT * FROM posts ORDER BY hit desc Limit 20");
}elseif(isset($_REQUEST['rand'])){
$showpost= mysql_query("SELECT * FROM posts ORDER BY rand() desc Limit 20");
}elseif(isset($_REQUEST['comment'])){
$showpost= mysql_query("SELECT * FROM posts ORDER BY comment desc Limit 20");
}else{
$showpost= mysql_query("SELECT * FROM posts ORDER BY id desc Limit 20");
}

while ($post=@mysql_fetch_array($showpost)){
echo "<a href='".$post['url']."'>".$post['title']."</a><br>";
}


کد شما فقط یکی از قسمتها رو توی پنل نمایش می ده. شاید به این دلیل سرعت لود سایت شما پایین نیومده.

اگه بخوایم همه این قسمتها رو توی پنل نمایش بدم باید 6 بار از دیتابیس کوئری گیری کنم، محتویات سایت هم باید از دیتابیس دریافت بشن تعداد کوئری گیری ممکنه به 10 تا یا بیشتر برسه.

در این شرایط سرعت دیتابیس و در نتیجه سرعت سایت در بازدیدهای بالا، کم نمی شه؟

tem988
سه شنبه 02 فروردین 1390, 02:05 صبح
باید لینک هایی که گت میفرسته رو هم درست کنی تا بقیه قسمت ها رو هم بیاره
مثلا برای اومد پست های پر بازدید با از لینک زیر استفاده کنی
نه فشاری روی سرور نداره



<a href="?hit">پربازدید ترین پست ها</a><br>
<a href="?rand">پست های تصادفی</a><br>
روی هر کدوم از لینک ها کلیک کنی قسمت مورد نظر رو میاره

phpweb
سه شنبه 02 فروردین 1390, 02:12 صبح
باید لینک هایی که گت میفرسته رو هم درست کنی تا بقیه قسمت ها رو هم بیاره

مثلا برای اومد پست های پر بازدید با از لینک زیر استفاده کنی



<a href="?hit">پربازدید ترین پست ها</a><br>
<a href="?rand">پست های تصادفی</a><br>
روی هر کدوم از لینک ها کلیک کنی قسمت مورد نظر رو میاره

شما متوجه منظورم نشدید.

من می خوام وقتی کاربر وارد سایت شد، توی پنلها لینک آخرین اخبار و مقالات و . . . نمایش داده بشه.

در این حالت احتیاجی به استفاده از متد گت نیست.

tem988
سه شنبه 02 فروردین 1390, 02:24 صبح
شما مگه نمیخواهید تمامی قسمت ها رو بزارید یعنی پربازدید , اخرین اخبار و اخبار تصادفی
خوب به صورت پیش فرض من قرار دادم روی اخرین اخبار و اگر روی لینک هایی که دادم کلیک کنه بقیه قسمت ها رو میاره
اینطوری فقط یک کوئری فرستاده میشه و هر قسمت که لازم داشته باشه رو کلیک میکنه و میاره
ولی اگر بخوای همشو با هم بیاره if ها رو بردار
اگر همشو با هم بخوای نشون بدی باید برای همش کوئری جدا بنویسی
ولی بازم میگم اگر توی پنله فشاری روی سرور نداره
میتونی به صورت اجاکس بنویسی که سرعت لود ببره بالا البته از اون روش گت ولی اگر همشو با هم بیاری دیگه نیازی به اجاکس نیست

ghasemweb
سه شنبه 02 فروردین 1390, 17:28 عصر
بهتره شما چند تا سایت که همچین پنل هایی دارند رو بازدید کنید فکر کنم تاثیر چندانی نداشته باشه

phpweb
سه شنبه 02 فروردین 1390, 18:48 عصر
شاید سایتهای دیگه، پربازدید ترین اخبار و . .. رو توی یه فایل قرار می دن و موقع بازدید کاربر اون صفحه رو اینکلود می کنن.

ما که نمی تونیم تشخیص بدیم از چه روشی استفاده شده.

اگه تعداد کوئری گیری زیاد باشه، تاثیری روی سرعت دیتابیس نمی ذاره؟