افزایش سرعت سایت ودپرس – بهینه سازی htaccess وردپرس
امروزه، یک ظاهر چشمنواز از وبسایتتون یا یک محتوای کامل، برای جذب کاربران بالقوه کافی نیست.
اگر یک سایت دارین ، باید بدونین که گوگل از الگوریتمی استفاده میکنه که سرعت بارگذاری سایت رو به یکی از عوامل موثر بر موقعیت سایت در نتایج جستوجو تبدیل میکنه. بنابراین وقتی بارگذاری سایت فقط چند ثانیه طول میکشه، برای کاربران اینترنت و گوگل اغلب خیلی طولانیه.
طبق آمارها، تقریبا نیمی از کاربران اینترنت انتظار دارن که یک سایت در مدت 2 ثانیه یا کمتر بارگذاری بشه. مراقبت از این امر خیلی مهمه به ویژه اینکه میشه اون رو بدون تلاش زیادی بهبود بخشید.
تکنیکهای زیادی برای بهبود زمان بارگذاری سایت شما وجود داره. بعضی از اونها اساسی و نسبتا ساده هستن. یکی از راهحلها فایل htaccess هست که به شما امکان میده در عرض ند دقیقه، بهینهسازی سایت رو معرفی کنین.
فایل htaccess چیست؟
Htaccess یک فایل پیکربندی برای استفاده در وب سرورهای آپاچی هست که در مسیر روت قرار داره و باعث قابلیت کنترل یک پوشه خاص یا قسمتی از سرور میشه. با استفاده از فایل htaccess میتونیم پیکربندی نرمافزار سرور رو تغییر بدیم تا اجرای برخی از عملکردها و ویژگیهای سرور متوقف یا شروع بشه، به عنوان مثال (با در نظر گرفتن هدف این آموزش) میتونیم:
سایتمون رو بهینه کنیم
سرعت بارگذاری صفحات رو بهبود ببخشیم
یک diversion ایجاد کنیم (داخلی و خارجی)
ایجاد مسیرهای محافظت شده با رمز عبور
مسدود کردن IP خاص
و خیلی چیزهای بیشتر
فایل htaccess در وردپرس رو از کجا پیدا کنیم؟
فایل در پوشه روت نصب وردپرس شما قرار داره. اسم فایل htaccess با یک نقطه (.) در ابتداش شروع میشه که مشخص میکنه یک فایل مخفیه. به یاد داشته باشین زمانی که میخواهین با استفاده از کلاینت FTP یا cPanel هاستتون به فایل htaccess دسترسی داشته باشین، ویژگی show hidden file رو فعال کرده باشین.
چرا نمیتونین فایل htaccess رو پیدا کنین؟
ممکنه پیش بیاد که سایت وردپرس شما هنوز یک فایل htaccess ایجاد نکرده باشه. زمانیکه شما پیوندهای یکتا رو در Settings >> Permalinks settings تنظیم میکنین، فایل htaccess ایجاد میشه. بعدش به سادگی روی Save changes کلیک کنین تا وردپرس رو مجبور کنین که یک فایل htaccess در مسیر روت وبسایتتون ایجاد کنه.
اگر در این مرحله با تولید فایل مشکل داشتین، ابتدا مجوزهای مسیر رو چک کنین، که باید قابل نوشتن باشه.
در صورت عدم وجود فایل htaccess میتونین اون رو ایجاد کرده و آپلود کنین.
البته همه سرورها از فایل htaccess پشتیبانی نمیکنن (به عنوان مثال سرورهای رایگان) و ممکنه سرویس بلاک شده باشه – اگر هنگام ایجاد فایل مشکلی پیش اومد به این نکته توجه داشته باشین.
کد بهینه سازی برای فایل htaccess
فشردهسازی
فشردهسازی به راحتی اندازه فایل رو کاهش میده. و بیشتر برای فایلها HTML، JavaScripts، CSS stylesheets، و فایلهای XML موثر هست.
به طور کلی، فشرده سازی 60 تا 80 درصد اندازه دادهها رو کاهش میدهو بنابراین شما میتونین با اون، زمان پاسخ سرور و پهنای باند – حجم دادههایی که باید توسط سرور به مرورگر مشتری ارسال بشه رو کاهش بدین.
بهترین راه برای فعال کردن فشرده سازی، استفاده از mod_gzip یا mod_deflate برای نرمافزارهای آپاچی (یا معادلش برای سایر وب سرورها) هست. هر دو ماژول اساسا یک کار رو انجام میدن، دادهها رو فشرده میکنن، اما mod_deflate بهتر پشتیبانی میشه و پیکربندیش هم راحتتره. اگر به دلایلی mod_deflate در وبسایت یا وب سرور شما به درستی کار نمیکنه، مطمئنا میتونین از mod_gzip استفاده کنین. هر دو روش فشرده سازی رو میتونیم با افزودن یک کد ساده در فایل htaccess وردپرس فعال کنیم:
DEFLATE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# BEGIN DEFLATE COMPRESSION <IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml </IfModule> # END DEFLATE COMPRESSION |
GZIP
1 2 3 4 5 6 7 8 9 10 11 12 |
# BEGIN GZIP COMPRESSION <IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </IfModule> # END GZIP COMPRESSION |
Caching مرورگر
با تنظیم caching مروررگر، شما به مرورگر میگین که نوعی فایل رو برای مدت زمان مشخصی در حافظه محلی (cache) نگه داره. وقتی فایل cache دوباره موردنیاز باشه، مرورگر به جای درخواست اون از سرور، اون رو از درایو محلی خودش بارگیری میکنه.
ما میتونیم برای این کار از دو ماژول آپاچی mod_expires و mod_headers (یا معادل اون برای سایر وب سرورها) استفاده کنیم.
هر دو روش رو میشه همزمان در فایل htaccess تنظیم کرد:
Expires headers
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#BEGIN EXPIRES HEADERS <IfModule mod_expires.c> # Enable expirations ExpiresActive On # Default expiration: 1 hour after request ExpiresDefault "now plus 1 hour" # CSS and JS expiration: 1 week after request ExpiresByType text/css "now plus 1 week" ExpiresByType application/javascript "now plus 1 week" ExpiresByType application/x-javascript "now plus 1 week" # Image files expiration: 1 month after request ExpiresByType image/bmp "now plus 1 month" ExpiresByType image/gif "now plus 1 month" ExpiresByType image/jpeg "now plus 1 month" ExpiresByType image/jp2 "now plus 1 month" ExpiresByType image/pipeg "now plus 1 month" ExpiresByType image/png "now plus 1 month" ExpiresByType image/svg+xml "now plus 1 month" ExpiresByType image/tiff "now plus 1 month" ExpiresByType image/vnd.microsoft.icon "now plus 1 month" ExpiresByType image/x-icon "now plus 1 month" ExpiresByType image/ico "now plus 1 month" ExpiresByType image/icon "now plus 1 month" ExpiresByType text/ico "now plus 1 month" ExpiresByType application/ico "now plus 1 month" # Webfonts ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType application/x-font-woff "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" </IfModule> #END EXPIRES HEADERS |
Cache-Control
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# BEGIN Cache-Control Headers <ifModule mod_headers.c> <filesMatch "\.(ico|jpe?g|png|gif|swf)$"> Header set Cache-Control "public" </filesMatch> <filesMatch "\.(css)$"> Header set Cache-Control "public" </filesMatch> <filesMatch "\.(js)$"> Header set Cache-Control "private" </filesMatch> <filesMatch "\.(x?html?|php)$"> Header set Cache-Control "private, must-revalidate" </filesMatch> </ifModule> # END Cache-Control Headers |
توجه: نیازی به تنظیم دستور max-age با Cache-Control header نیست، چون قبلا توسط ماژول mod_expires تنظیم شده. در سایر موارد ما باید از موارد زیر استفاده کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# BEGIN Cache-Control Headers <ifModule mod_headers.c> <filesMatch "\.(ico|jpe?g|png|gif|swf)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> <filesMatch "\.(css)$"> Header set Cache-Control "max-age=604800, public" </filesMatch> <filesMatch "\.(js)$"> Header set Cache-Control "max-age=216000, private" </filesMatch> <filesMatch "\.(x?html?|php)$"> Header set Cache-Control "max-age=600, private, must-revalidate" </filesMatch> </ifModule> # END Cache-Control Headers |
این آموزش رو دوست داشتین؟ لطفا به اشتراکش بذارین، مرسی:)