PDA

View Full Version : حرفه ای: ساخت سایت مپ برای سایت های بزرگ



maysam.m
چهارشنبه 17 اردیبهشت 1393, 20:53 عصر
سلام

میخواستم بدونم برای ساخت سایت مپ برای سایت های بزرگ با حدود بیش از 20 هزار صفحه چه راهی رو پیشنهاد میکنید که کمترین فشار به سرور بیاد و بهینه باشه

مرسی

aalmair
چهارشنبه 17 اردیبهشت 1393, 21:08 عصر
سایت مپ هاتو تیکه تیکه کن و تو هر کدوم به تعداد مورد نیاز نشون بده

http://your-site/sitemap.php



<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://your-site/sitemap.php?p=1</loc>
</sitemap>
<sitemap>
<loc>http://your-site/sitemap.php?p=2</loc>
</sitemap>
</sitemapindex>




و اینم یه تیکه از سایت مپ http://your-site/sitemap.php?p=2




<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://your-site/post/3456</loc>
<lastmod>2014-05-07T15:28:44+00:00</lastmod>
<changefreq>monthly</changefreq>
<priority>never</priority>
</url>
<url>
<loc>http://your-site/post/456</loc>
<lastmod>2014-05-07T15:28:25+00:00</lastmod>
<changefreq>monthly</changefreq>
<priority>never</priority>
</url>
</urlset>

maysam.m
چهارشنبه 17 اردیبهشت 1393, 21:21 عصر
چه طور تیکه تیکه کنم و بر چه اساس؟
مثلا هر 1000 تا توی یه بخش؟
کش کنم و به صورت استاتیک باشند یا داینامیک؟

aalmair
چهارشنبه 17 اردیبهشت 1393, 21:32 عصر
فایل sitemap.php در ریشه سایت








<?php

$db_link=mysql_connect('localhost','root','') ;

mysql_select_db('blog',$db_link);
mysql_set_charset('utf-8',$db_link);

$run_query=mysql_query("select * from posts where posts.post_status='publish' ;",$db_link);

$count_post=mysql_affected_rows($db_link);





$host= 'http://your-site/';
$sitmap_url=$host."/sitemap.php?p=";

////// 50,000 url max
////// 10 mb (10,485,760 bytes) max byte

$max_url=50000;
// $max_byte=2;


$max_url_post=$max_url/2;








$sitemap_part=ceil(($count_post)/$max_url);





if((isset($_GET['p'])&&is_numeric($_GET['p']))){

header("Content-Type: text/xml; charset=utf-8");



$page=$_GET['p'];


if(is_numeric($page)&&$page>0){
$page=(int)$page;

if(!($page<=$sitemap_part)) {
$page=1;
}


}else{
$page=1;
}


echo '<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';



$query="select posts.* from posts where posts.post_status='publish' group by posts.postid order by time desc limit ".(($page-1)*$max_url_post).",$max_url_post ";
$mysql_query=mysql_query($query,$db_link);

while($line=mysql_fetch_array($mysql_query,MYSQL_A SSOC)){

echo '<url><loc>';


echo $host.'/post/'.($line['name'])."\n";

echo '</loc><lastmod>';
echo date('Y-m-d',$line['time']);
echo 'T';
echo date('H:i:sP',$line['time']);

echo '</lastmod><changefreq>monthly</changefreq><priority>never</priority></url>';

}


echo '</urlset>';






}else{

header("Content-Type: text/xml; charset=utf-8");


echo '<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';


for($i=1;$i<=$sitemap_part;$i++){
echo '<sitemap><loc>'.$sitmap_url."$i".'</loc></sitemap>';

}
echo '</sitemapindex>';

}

mohan21
چهارشنبه 17 اردیبهشت 1393, 21:39 عصر
مطالب سایت شما گروه بندی هستند؟
اگر آره بهترین روش هر گروه در یک فایل باشد ...

بنده به همین صورت برای سایت خبری ام انجام میدهم و هر چند ساعت نقشه سایت ایجاد میشه ...

aalmair
چهارشنبه 17 اردیبهشت 1393, 21:43 عصر
مطالب سایت شما گروه بندی هستند؟
اگر آره بهترین روش هر گروه در یک فایل باشد ...

بنده به همین صورت برای سایت خبری ام انجام میدهم و هر چند ساعت نقشه سایت ایجاد میشه ...

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

maysam.m
چهارشنبه 17 اردیبهشت 1393, 21:50 عصر
خودم نظرم اینه که بیام بر اساس هر مثلا 1000 تا پست یه فایل جدا درست کنم. اما چون تعداد مطالب دقیقا مطابق آی دی نیست نمیشه دقیقا تشخیص داد 1000 تا از چه آی دی تا چه آی دی ـه .
مگه اینکه به صورت دستی 1000 تا رو مشخص کنیم و اون رو در یه فایل بسازیم.
تا 1000 تای بعدی هم به صورت داینامیک سایت مپ رو ایجاد کنیم. نظرتون چیه؟


مطالب سایت شما گروه بندی هستند؟
اگر آره بهترین روش هر گروه در یک فایل باشد ...

بنده به همین صورت برای سایت خبری ام انجام میدهم و هر چند ساعت نقشه سایت ایجاد میشه ...
سایت دسته بندی و تگ گذاری داره
اگه بخواهیم به این صورت عمل کنیم باید با ارسال هر پست اون کش رو حذف و مجدد بسازیم. ایده خوبیه اما تعداد دسته ها خیلی زیاده و تعداد پست های ارسال هم روزانه زیاده. به نظرت از لحاظ سئو و استفاده از منابع مشکلی پیش نمیاره؟

mohan21
چهارشنبه 17 اردیبهشت 1393, 21:55 عصر
فرضا شما 10 گروه دارید، در نتیجه 10 فایل هم دارید، بروز رسانی فایل ها هم در بازه زمانی مورد نظر خودتان(فرضاً هر یک ساعت) با cron job انجام می شود.
اطلاعات قبلی از فایل ها حذف نمی شوند بلکه در هر مرحله اضافه می شوند ...

maysam.m
پنج شنبه 18 اردیبهشت 1393, 18:57 عصر
کسی نظر دیگه ای نداره؟

behzadamin12
جمعه 19 مهر 1398, 17:24 عصر
ساخت sitemapحرفه ای در لاراول (https://jobteam.ir/ProductUser/97-Laravel-Sitemap-Xml) برای سایتهای بزرگ و داده های حجیم که در مطلب مورد نظر کاملا توضیح داده شده است
https://jobteam.ir/ProductUser/97-Laravel-Sitemap-Xml

رضا قربانی
دوشنبه 22 مهر 1398, 18:07 عصر
سلام

میخواستم بدونم برای ساخت سایت مپ برای سایت های بزرگ با حدود بیش از 20 هزار صفحه چه راهی رو پیشنهاد میکنید که کمترین فشار به سرور بیاد و بهینه باشه

مرسی

در زمانی که از وب مستر دارید سایت مپ معرفی میکنید در همان زمان عملیات ساخت سایت مپ را انجام دهید یعنی اتوماتیک زمانی که صفحه اجرا شد شما دستورات ساخت سایت مپ رو اجرا کنید و داخل sitemap.xml ذخیره کنید . ترتیب صفحات مهم که اول باشن خیلی مهمه .
معمولا داخل sitemap.xml تعداد سایت مپ هایی که با نام های 1 2 3 4 ساخته میشن رو واکشی میکنن . یه جایی خونده بودم تا 40 هزار لینک در یک سایت مپ مورد قبول گوگل هست .