كيفية تسريع WordPress الاستفادة من التخزين المؤقت للمتصفح عبر htaccess
نشرت: 2017-08-04استفد من التخزين المؤقت للمتصفح لجعل صفحات الويب الخاصة بك أسرع. إذا كان بإمكانك الاستفادة من التخزين المؤقت للمتصفح ، فيمكنك زيادة سرعة موقع الويب بشكل كبير. مع بدء Google في النظر في سرعة الموقع كمعامل لتحسين محركات البحث ، يمكن لمشرفي المواقع الاستفادة من التخزين المؤقت للمتصفح لتحسين سرعة الموقع والحصول على تصنيفات أفضل لمحركات البحث.
هذا ملف .htaccess
كامل لدينا في مجلد الجذر Crunchify.
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
######### CRUNCHIFY SETTING - START ########## Options All - Indexes # Disable ETags < IfModule mod_headers . c > Header unset ETag Header set Connection keep - alive < / IfModule > FileETag None ############## MaxCDN Fix ############# < IfModule mod_headers . c > < FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$" > Header set Access - Control - Allow - Origin "*" < / FilesMatch > < / IfModule > ########### REDIRECT TRAFFIC TO HTTPS ############ # RewriteEngine On # RewriteCond %{HTTPS} off # RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ############ SECURITY ########### < FilesMatch "\.(md|exe|sh|bak|inc|pot|po|mo|log|sql)$" > Order allow , deny Deny from all < / FilesMatch > < Files robots . txt > Allow from all < / Files > ############## CACHING-GZIP ############ < IfModule mod_expires . c > ExpiresActive On ExpiresDefault A2592000 < FilesMatch "\.(txt|xml|js)$" > ExpiresDefault A2592000 < / FilesMatch > < FilesMatch "\.(css)$" > ExpiresDefault A2592000 < / FilesMatch > < FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4|m4v|ogg|webm|aac)$" > ExpiresDefault A2592000 < / FilesMatch > < FilesMatch "\.(jpg|jpeg|png|gif|swf|webp)$" > ExpiresDefault A2592000 < / FilesMatch > < / IfModule > < IfModule mod_headers . c > < FilesMatch "\.(txt|xml|js)$" > Header set Cache - Control "max-age=2592000" < / FilesMatch > < FilesMatch "\.(css)$" > Header set Cache - Control "max-age=2592000" < / FilesMatch > < FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4|m4v|ogg|webm|aac)$" > Header set Cache - Control "max-age=2592000" < / FilesMatch > < FilesMatch "\.(jpg|jpeg|png|gif|swf|webp)$" > Header set Cache - Control "max-age=2592000" < / FilesMatch > < / IfModule > < IfModule mod_deflate . c > < IfModule mod_setenvif . c > < IfModule mod_headers . c > SetEnvIfNoCase ^ ( Accept - EncodXng | X - cept - Encoding | X { 15 } | ~ { 15 } | - { 15 } ) $ ^ ( ( gzip | deflate ) \ s* , ? \ s* ) + | [ X ~ - ] { 4 , 13 } $ HAVE_Accept - Encoding RequestHeader append Accept - Encoding "gzip,deflate" env = HAVE_Accept - Encoding < / IfModule > < / IfModule > < IfModule mod_filter . c > AddOutputFilterByType DEFLATE "application/atom+xml" \ "application/javascript" \ "application/json" \ "application/ld+json" \ "application/manifest+json" \ "application/rdf+xml" \ "application/rss+xml" \ "application/schema+json" \ "application/vnd.geo+json" \ "application/vnd.ms-fontobject" \ "application/x-font-ttf" \ "application/x-javascript" \ "application/x-web-app-manifest+json" \ "application/xhtml+xml" \ "application/xml" \ "font/eot" \ "font/opentype" \ "image/bmp" \ "image/svg+xml" \ "image/vnd.microsoft.icon" \ "image/x-icon" \ "text/cache-manifest" \ "text/css" \ "text/html" \ "text/javascript" \ "text/plain" \ "text/vcard" \ "text/vnd.rim.location.xloc" \ "text/vtt" \ "text/x-component" \ "text/x-cross-domain-policy" \ "text/xml" < / IfModule > < IfModule mod_mime . c > AddEncoding gzip svgz < / IfModule > < / IfModule > ######### CRUNCHIFY SETTING END ############ # BEGIN WordPress < IfModule mod_rewrite . c > RewriteEngine On RewriteBase / RewriteRule ^ index \ . php $ - [ L ] RewriteCond % { REQUEST_FILENAME } ! - f RewriteCond % { REQUEST_FILENAME } ! - d RewriteRule . / index . php [ L ] < / IfModule > # END WordPress |

ملاحظة : يرجى إزالة إعادة التوجيه إلى كتلة HTTPS إذا لم تكن تستخدم HTTPS :). لقد علقت بالفعل على الرغم من ذلك. إذا قمت بتمكين HTTPS في الموقع بالفعل وما زلت تسمح للمستخدم بزيارة الموقع عبر HTTP فأنت جيد.
دعونا نفهم كل أقسام ملف .htaccess:
الخطوة 1 التخلص من ETag
بادئ ذي بدء ، نحتاج إلى disable ETag header
لأننا سنستخدم مدة انتهاء الصلاحية. تُعرف تقنية ETag
بأنها بطيئة ومشكلة - حتى أن المواقع الأخرى ذات التصنيف الأعلى تشكو من ذلك.
أضف إلى .htaccess
: (الموجود في موقع جذر المدونة)
1 2 3 4 5 6 |
# Disable ETags < IfModule mod_headers . c > Header unset ETag Header set Connection keep - alive < / IfModule > FileETag None |
نحن أيضًا نحافظ على الاتصال keep-alive
. يطلق عليه persistent connection
. إذا كان يجب فتح اتصال جديد لكل طلب أو ملف ، فقد يستغرق الأمر وقتًا أطول بكثير.
يجب قراءة الآخر:
- 5 حيل مفيدة لتسريع WordPress وتعزيز الأداء
- 9 من موارد WordPress الأساسية التي ربما فاتتك
الخطوة 2 - تفعيل التخزين المؤقت للمتصفح
إذا قمت بتعيين تاريخ انتهاء الصلاحية أو الحد الأقصى للعمر في رؤوس HTTP للموارد الثابتة ، فستقوم المتصفحات الحديثة بتحميل الموارد الثابتة التي تم تنزيلها مسبقًا مثل الصور و css و javascript و pdf و swf وما إلى ذلك من الأقراص المحلية بدلاً من الشبكة.
لذلك إذا قمت بتكوين خادم الويب الخاص بك لتعيين رؤوس التخزين المؤقت وتطبيقها على جميع الموارد الثابتة القابلة للتخزين المؤقت ، فسيظهر موقعك على أنه يتم تحميله بشكل أسرع. أضف أدناه إلى .htaccess
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 34 35 36 37 38 |
< IfModule mod_expires . c > ExpiresActive On ExpiresDefault A2592000 < FilesMatch "\.(txt|xml|js)$" > ExpiresDefault A2592000 < / FilesMatch > < FilesMatch "\.(css)$" > ExpiresDefault A2592000 < / FilesMatch > < FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4|m4v|ogg|webm|aac)$" > ExpiresDefault A2592000 < / FilesMatch > < FilesMatch "\.(jpg|jpeg|png|gif|swf|webp)$" > ExpiresDefault A2592000 < / FilesMatch > < / IfModule > < IfModule mod_headers . c > < FilesMatch "\.(txt|xml|js)$" > Header set Cache - Control "max-age=2592000" < / FilesMatch > < FilesMatch "\.(css)$" > Header set Cache - Control "max-age=2592000" < / FilesMatch > < FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4|m4v|ogg|webm|aac)$" > Header set Cache - Control "max-age=2592000" < / FilesMatch > < FilesMatch "\.(jpg|jpeg|png|gif|swf|webp)$" > Header set Cache - Control "max-age=2592000" < / FilesMatch > < / IfModule > |
ما يفعله هذا هو إضافة رأس انتهاء الصلاحية في المستقبل البعيد (تأكد من تحميل mod_expires
في تكوين apache إذا كانت لديك مشاكل) إلى المحتوى الثابت الخاص بك (الصور ، js ، css ، إلخ).
شيئين هنا:
- ExpiresDefault A2592000 = شهر واحد في المستقبل
- التحكم في ذاكرة التخزين المؤقت "الحد الأقصى للعمر = 2592000" = شهر واحد
إذا كنت ترغب في ذلك ، يمكنك أيضًا تعيين القيمة على 1 سنة = 31536000
الخطوة 3 أضف رؤوس ضغط gzip وتفريغ الضغط
يؤدي ضغط الأشياء دائمًا إلى جعلها أصغر حجمًا وتحميلها بشكل أسرع ، لذا فإن تنفيذ بعض أشكال الضغط على مكوناتك أمر لا بد منه.
قد لا تعمل خطوة التحسين هذه إذا لم يكن الخادم الخاص بك يحتوي على mod_deflate
أو mod_gzip
مثبتين كجزء من Apache.
نحن في الأساس نضغط معظم الموارد بحيث تكون هذه الأحمال بنطاق ترددي أقل وبسرعة كبيرة.
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
< IfModule mod_deflate . c > < IfModule mod_setenvif . c > < IfModule mod_headers . c > SetEnvIfNoCase ^ ( Accept - EncodXng | X - cept - Encoding | X { 15 } | ~ { 15 } | - { 15 } ) $ ^ ( ( gzip | deflate ) \ s* , ? \ s* ) + | [ X ~ - ] { 4 , 13 } $ HAVE_Accept - Encoding RequestHeader append Accept - Encoding "gzip,deflate" env = HAVE_Accept - Encoding < / IfModule > < / IfModule > < IfModule mod_filter . c > AddOutputFilterByType DEFLATE "application/atom+xml" \ "application/javascript" \ "application/json" \ "application/ld+json" \ "application/manifest+json" \ "application/rdf+xml" \ "application/rss+xml" \ "application/schema+json" \ "application/vnd.geo+json" \ "application/vnd.ms-fontobject" \ "application/x-font-ttf" \ "application/x-javascript" \ "application/x-web-app-manifest+json" \ "application/xhtml+xml" \ "application/xml" \ "font/eot" \ "font/opentype" \ "image/bmp" \ "image/svg+xml" \ "image/vnd.microsoft.icon" \ "image/x-icon" \ "text/cache-manifest" \ "text/css" \ "text/html" \ "text/javascript" \ "text/plain" \ "text/vcard" \ "text/vnd.rim.location.xloc" \ "text/vtt" \ "text/x-component" \ "text/x-cross-domain-policy" \ "text/xml" < / IfModule > < IfModule mod_mime . c > AddEncoding gzip svgz < / IfModule > < / IfModule > |
الخطوة 4 تحقق مما إذا كانت الإعدادات الخاصة بك تعمل بشكل صحيح
الخروج أدناه قطة. يجب أن تشاهد جميع المعلمات التي تم تعيينها في رأس الاستجابة لملفك.
سؤال مفتوح: هل يمكنني تغيير تاريخ انتهاء صلاحية بعض الموارد مثل نص Google Adsense أو برنامج Google Analytics النصي؟
- https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js
- https://www.google-analytics.com/analytics.js
Answer is NO
. يمكنك فقط تعيين قيمة انتهاء الصلاحية للموارد التي يتم تحميلها من موقعك.