کاربرد متاتگ refresh در صفحات وب (HTML)

همانطور که می دانیم سورس کدهای صفحات وب از استاندارد زبان HTML یا (HyperText Markup Language) پیروی می کنند، یعنی فارغ از اینکه به چه زبان سمت سروری برنامه نویسی کنیم حاصل کار در وب به صورت کدهای HTML نمایان خواهد شد، از طرفی گاهی مواقع به دلایل مختلف دسترسی به سرور محدود شده یا امکان پذیر نیست و برای اعمال دستورات و سلایق خود ناچاریم دست به دامن کدهای HTML شویم که نمود بارز این موضوع در سرویس های مدیریت وبلاگ خودنمائی می کند، به طور مثال اگر بخواهیم به صورت خودکار کاربران را از وبلاگ قدیمی به وبلاگ جدید هدایت کنیم به طور معمول باید از متاتگی به نام refresh (رفرش یا تازه سازی) استفاده کنیم که در این آموزش به تفصیل در خصوص آن صحبت خواهیم کرد.
متاتگ refresh چیست؟
متاتگ refresh (رفرش یا تازه سازی) زیرمجموعه ای از شاخه متاتگ های خانواده http-equiv است که برای تنظیم سربرگ های HTTP یا HTTP Headers در زبان HTML به کار می روند، عبارت equiv مخفف Equivalent به معنی معادل یا مشابه است که منظور مشابه سازی دستورات HTTP سرور با کدهای HTML است.
به طور ساده HTTP Header به معنی پاسخ استاندارد و تعریف شده ای است که در جواب درخواست کاربر (Client) از سرور (Server) تنظیم و به عنوان سربرگ ارسال می شود تا مرورگر بتواند به فرض وضعیت بارگذاری صفحه، خطاهای سرور، نحوه پردازش، یونیکد، ذخیره سازی و... را مدیریت کند، این پاسخ ها معمولا توسط سیستم عامل یا برنامه نویسی سرور به مرورگر ارسال می شوند اما با روشی مشابه در HTML نیز می توانیم این کار را معادل سازی کنیم.
نکته: با استفاده از قابلیت Developer در مرورگرها (معمولا با فشردن کلید F12 در دسترس است) می توانیم سربرگ های رد و بدل شده در یک درخواست تحت وب را مشاهده کنیم.
متاتگ های خانواده http-equiv کاربردهای زیادی دارند که در زیر به صورت نمونه به آنها اشاره می کنیم:
- کنترل ذخیره موقت صفحه (cache-control)
<meta http-equiv="cache-control" content="no-cache">
- تعیین زبان محتوای صفحه (content-language)<meta http-equiv="content-language" content="fa-IR">
- تعیین نوع و یونیکد محتوای صفحه (content-type)HTML نسخه 4:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
HTML نسخه 5:<meta charset="utf-8">
- تعیین تاریخ ایجاد صفحه (date)<meta http-equiv="date" content="Wed, 21 Feb 2012 20:55:12 GMT">
- تعیین تاریخ انقضای صفحه (expires)<meta http-equiv="expires" content="never">
- تعیین تاریخ آخرین ویرایش صفحه (last-modified)<meta http-equiv="last-modified" content="Mon, 01 Jan 2013 18:32:44 GMT">
- تعیین موقعیت برای انتقال (location)<meta http-equiv="location" content="URL=https://webgoo.ir">
- تعیین مدت زمان برای رفرش خودکار صفحه یا انتقال به آدرس خاص (refresh)<meta http-equiv="refresh" content="200">
<meta http-equiv="refresh" content="30; URL=https://webgoo.ir">
- تنظیم کوکی ها (set-cookie)<meta http-equiv="set-cookie" content="cookie_name=value;expires=Fri, 1 Dec 2013 11:30:00 GMT; path=/">
- نحوه نمایش صفحه در فریم (window-target)<meta http-equiv="window-target" content="_top">
در چه مواردی از متاتگ refresh استفاده کنیم؟
واقعیت این است که استفاده از متاتگ رفرش (refresh) برای صفحاتی که اهمیت زیادی دارند توصیه نمی شود و ممکن است این کار باعث بروز مشکلاتی با موتورهای جستجو شود که در نهایت به سئوی سایت یا وبلاگمان صدمه می زند، اما این گفته بدین معنی نیست که به کل نتوانیم از این متاتگ استفاده کنیم، اگر به فرض وبلاگی قدیمی داشته باشیم و بخواهیم به هر دلیل مطالب و فعالیتمان را به وبلاگی جدید منتقل کنیم، می توانیم از این متاتگ استفاده کرده و کاربران را به طور خودکار به آدرس جدید هدایت کنیم که به این کار در اصطلاح ریدایرکت (Redirect) می گویند، یا فرض کنیم در صفحات موسوم به 404 (کد HTTP خطای صفحه مورد نظر پیدا نشد!) می توانیم کاربر را پس از چند ثانیه به صورت خودکار به صفحه اصلی سایت یا وبلاگمان منتقل کنیم، نمونه دیگر می تواند استفاده از متاتگ refresh در هنگام ورود و خروج کاربران به سیستم و پنل مدیریت باشد و یا در موقعیت های مشابه که نیاز به انتقال خودکار از آدرس های URL مختلف است، پس یادمان باشد که استفاده از این متاتگ در همه جا توصیه نمی شود و فقط در موارد خاصی که مخصوصا صحبت از موتورهای جستجو در میان نیست می توانیم از آن استفاده کنیم.
نکته: برای صفحاتی که نیاز به رفرش اطلاعات در فواصل زمانی خاص دارند و از طرفی کسب رتبه مناسب در موتورهای جستجو نیز برایشان دارای اهمیت است استفاده از شیوه های جایگزین نظیر کدهای جاوا اسکریپت توصیه می شود، مثال:
setTimeout(function(){
window.location.reload(true);
}, 5000);
که عدد 5000 به معنی 5 ثانیه (5000 میلی ثانیه) است و صفحه هر 5 ثانیه به صورت خودکار رفرش خواهد شد.چگونه از متاتگ refresh استفاده کنیم؟
استفاده از این متاتگ ساده و سریع است، کافی است درون تگ های head ترجیحا در ابتدای صفحه نمونه کد زیر را قرار داده مدت زمان به ثانیه و آدرس URL صفحه مقصد را در قسمت content تنظیم نمائیم:
<meta http-equiv="refresh" content="30; URL=https://webgoo.ir">
توضیح:- مقادیر عددی موجود در قسمت content میزان زمان به ثانیه است که کاربر پس از گذشت این مدت به صفحه مقصد منتقل خواهد شد.
- قسمت مربوط به URL با آدرس کامل صفحه مقصد تکمیل می شود.
از متاتگ refresh برای بارگذاری مجدد و به اصطلاح رفرش همان صفحه نیز می توانیم استفاده کنیم و اجباری برای انتقال کاربر به صفحه ای دیگر وجود ندارد، در این صورت نیاز به درج پارامتر مربوط به قسمت URL نیست و صرف درج مدت زمان به ثانیه کافی خواهد بود:
<meta http-equiv="refresh" content="200">
آشنایی با سایر روش های انتقال (Redirect)
در انتهای این مطلب بد نیست به سایر روش هایی که برخلاف متاتگ refresh مورد قبول موتورهای جستجو هستند اشاره ای داشته باشیم.
- استفاده از فایل htaccess و کد HTTP ریدایرکت 301
از نظر سئو (SEO) بهترین گزینه برای ایجاد انتقال از آدرس URL قدیمی به آدرس URL جدید استفاده از کد HTTP خطای 301 یا "HTTP/1.1 301 Moved Permanently" است، در این روش آدرس URL قدیمی با هدف انتقال همیگشی به آدرس URL جدید منتقل شده و علاوه بر این ارزش (Pagerank) آدرس قبلی حفظ و به آدرس جدید منتقل خواهد شد، برای ایجاد ریدایرکت 301 در فایل htaccess معمولا در سرورهای Apache می توانیم تنظیمات را انجام دهیم، مثال:
RewriteEngine on
RewriteCond /old/page/%{REQUEST_URI} !-f
RewriteRule ^(.+) /new/page/$1 [R=301]
- استفاده از HTTP Header در PHPعلاوه بر روش htaccess در کدهای PHP نیز می توانیم این کار را با ارسال دستورات HTTP Header انجام دهیم، خوشبختانه با برنامه نویسی PHP به راحتی قادریم مقادیر ارسالی به عنوان Header صفحات را مدیریت کنیم، مثال:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://webgoo.ir");
?>
برای دیدن سایر متاتگ های HTML و آشنایی با کاربرد آنها می توانیم به آموزش زیر مراجعه کنیم:متاتگ ها (Meta tags) و کاربرد آنها در صفحات وب (HTML)
دسته بندی: آموزش کاربردی » HTML

نحوه نمایش فیلم و کلیپ ویدئویی در سایت و وبلاگ
نمایش فیلد جستجوی گوگل در سایت یا وبلاگ
چگونه رنگ و تصویر پس زمینه سایت یا وبلاگ را تغییر دهیم؟
نحوه درج علامت های خاص در HTML
پخش فایل صوتی (آهنگ، موسیقی پس زمینه) در سایت و وبلاگ
دیدگاه


reza
۲۳:۲۸ ۱۳۹۲/۰۴/۱۶
سایت من به زبان html نوشته شده و حالا سیستم جدید سایت آماده شده که php هست حالا می خواهم منتقل کنم به سیستم جدید با توجه به اینکه سایت قبلی html هست نحوه ریدایرکت درست چگونه هست تا در گوگل ارزش و رتبه صفحات قدیمی به جدید منتقل بشه و ورودی هام از بین نره ورودی زیادی هم اکنون از گوگل دارم با سایت قبلی.
نام سایت تغییر نکرده فقط سیستم سایت عوض شده. صفحات قبلی سایتم نیز دستی نوشته شدند و همه html هستند
نام سایت تغییر نکرده فقط سیستم سایت عوض شده. صفحات قبلی سایتم نیز دستی نوشته شدند و همه html هستند
در صورتی که محل قرارگیری فایل های HTML تغییر نکند (اعم از تغییر دایرکتوری، نام یا فرمت فایل و...)، به عبارت دیگر با وارد کردن آدرس های استاتیک فعلی، صفحات به روال سابق قابل مشاهده باشند، استفاده از سیستم مدیریت جدید خللی به مطالب قبلی وارد نمی کند، لذا ریدایرکت نیاز نیست، در واقع لینک به فایل های قبلی شما حفظ می شود.
نکته: این مسئله در مورد لینک های داینامیک به این راحتی نیست! یعنی لینک هایی که سیستماتیک و توسط برنامه، صفحات را نشان می دهند باید همواره سازگار با برنامه ای باشند که استفاده می کنید.
نکته: این مسئله در مورد لینک های داینامیک به این راحتی نیست! یعنی لینک هایی که سیستماتیک و توسط برنامه، صفحات را نشان می دهند باید همواره سازگار با برنامه ای باشند که استفاده می کنید.
۱۴:۰۲ ۱۳۹۱/۱۰/۰۴
ممنون از اینکه خیلی زود جواب دادید
من از هر سه کد استفاده کردم. الان بازدیدهای iframe سایتم خیلی کم شده. ولی هنوز یه تعداد بازدید دارم که لینکشون مشخص نیست از کجاست. تو گوگل آنالیز هم ثبت نشده.
اگر تونستید اون کد رفرش میهن بلاگ رو هم گیر بیارید خیلی عالی میشه و کلا کارم رو راه انداختید.
در هر صورت ممنون
من از هر سه کد استفاده کردم. الان بازدیدهای iframe سایتم خیلی کم شده. ولی هنوز یه تعداد بازدید دارم که لینکشون مشخص نیست از کجاست. تو گوگل آنالیز هم ثبت نشده.
اگر تونستید اون کد رفرش میهن بلاگ رو هم گیر بیارید خیلی عالی میشه و کلا کارم رو راه انداختید.
در هر صورت ممنون
البته اینکه میهن بلاگ از چه کدی استفاده می کند و چه تفاوتی با کدهایی که قرار داده ایم دارد را بررسی نکرده ایم، ولی با اضافه کردن کد جاوا اسکریپت یا یکی از کدهای PHP (کد جاوا اسکریپت باید در تگ های HTML و کد PHP در کد های PHP قرار داده شود) به سایت خود، نباید صفحات سایتتان با iframe قابل نمایش باشد، در مورد بازدیدهای نامشخص، ممکن است مربوط به ربات ها یا برنامه های ارسال هرزنامه و... باشد، یک سایت الزاما توسط بازدیدکنندگان حقیقی کاوش نمی شود، بلکه بیش از یک سوم مخاطبان شما ربات و اسپمر هستند و از آنجایی که گوگل آنالیز مبتنی بر فعال بودن جاوا اسکریپت است آنها را محاسبه نمی کند.
۰۲:۵۵ ۱۳۹۱/۱۰/۰۴
سلام دوست عزیز
مطلب بسیار مفیدی بود
من یه مشکل اساسی دارم و اون اینه که میخوام صفحه سایتم رو مثل وبلاگ های میهن بلاگ رفرش کنم.
از جاهای مختلفی داره برام بازدید iframe میاد و من نمیخوام این بازدیدها به سایتم ضرر بزنه.
من دیدم که وبلاگ های میهن بلاگ برای هر بازدید یک بار رفرش میشه و باعث میشه سایتش حتی برای بازدیدهای iframe هم بالا بیاد. ممنون میشم راهنماییم کنی و جواب رو برام ایمیل کنی. یا همینجا جواب رو ذکر کنی.
بازم تشکر
مطلب بسیار مفیدی بود
من یه مشکل اساسی دارم و اون اینه که میخوام صفحه سایتم رو مثل وبلاگ های میهن بلاگ رفرش کنم.
از جاهای مختلفی داره برام بازدید iframe میاد و من نمیخوام این بازدیدها به سایتم ضرر بزنه.
من دیدم که وبلاگ های میهن بلاگ برای هر بازدید یک بار رفرش میشه و باعث میشه سایتش حتی برای بازدیدهای iframe هم بالا بیاد. ممنون میشم راهنماییم کنی و جواب رو برام ایمیل کنی. یا همینجا جواب رو ذکر کنی.
بازم تشکر
برای جلوگیری از نمایش صفحات سایت به صورت iframe دو راه وجود دارد، یا از کد جاوا اسکریپت زیر استفاده کنید (کد را در قسمت head قالب سایت قرار دهید):
<script>
if(top != self){
top.onbeforeunload = function(){/*alert("نمایش به صورت فریم مجاز نیست")*/};
top.location.replace(self.location.href);
}
</script>
یا اینکه در PHP کد زیر را در ابتدای صفحات سایت اجرا کنید (کد باید در جایی قرار گیرد که در ابتدای تمام صفحات اجرا شود):header("X-Frame-Options: DENY");
البته این روش در مرورگرهای جدیدتر کاربرد دارد و نکته مهم اینکه به طور کلی نمایش به صورت iframe را غیر فعال می کند، حتی برای همان سایت، اگر می خواهید به جزء سایت شما بقیه افراد نتوانند از iframe صفحات شما را نمایش دهند از سربرگ زیر هم می توانید استفاده کنید:header("X-Frame-Options: SAMEORIGIN");
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.