שיפור מהירות אתר וורדפרס באמצעות ביטול יכולות של וורדפרס

כחלק מהעבודה על שיפור מהירות אתר וורדפרס, יש לעבור על יכולות של בוורדפרס שאין בהם שימוש ולבטל אותן. במאמר זה, אראה איך לעשות את זה.
Disable unused wordpress features

תוכן עניינים

כחלק משיפור מהירות אתר וורדפרס אפשר לעבור על יכולות מובנות של וורדפרס שיתכן ואין לכם שימוש בהם. במקרה זה, תוכלו לבטל אותם לחלוטין, דבר שיכול לעזור קצת לשיפור מהירות האתר וגם במקרים מסוימים לשפר את אבטחת האתר.

את חלק מהדברים (או אולי את כולם) ניתן לעשות באמצעות תוספים שונים, עם זאת במאמר זה נראה איך לעשות אותם באמצעות שינוי באחד משלושה קבצים. htaccess, functions.php, wp-config.php. שימו לב שהשינויים ב htaccess מיודעים לשרתי Apache.

שינוי בקבצים אלו מיועד למשתמשים שיודעים מה הם עושים ואני לא לוקח אחריות על כל שינוי. בכל מקרה מומלץ לגבות. בנוסף, את קובץ functions.php שנו רק בתבנית הבת.

Really Simple Discovery – RSD

זהו פרוטוקול XML שנוצר על ידי Daniel Berlinger כדי לפשט את הדרך של בלוגים או אתרים לחשוף את המידע הנחוץ בשביל לגשת לשירותים שונים. אם אתם לא יודעים שאתם משתמשים בזה, רוב הסיכויים שאתם לא. כי גם אם יש צורך לתקשר עם האתר, יש דרכים שונות ומומלצות יותר (תראו בהמשך המאמר).
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://example.com/xmlrpc.php?rsd" />

כדי להסיר את הקישור מההדר, הוסיפו את השורה הבאה לקובץ functions.php

remove_action('wp_head', 'rsd_link');

Windows Live Writer

פיתוח של מייקרוסופט שמאפשר פרסום פוסטים באמצעות כלים שבהם אפשר לכתוב את הפוסטים שלכם אופליין ולפרסם אותם אחר כך. התוכנה הגיעה לסוף חייה לפני שנים כבר וקשה לי להאמין שאתם משתמשים בזה…
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:

<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://yourwebsite.com/wp-includes/wlwmanifest.xml">

כדי להסיר את הקישור מההדר, הוסיפו את השורה הבאה לקובץ functions.php

remove_action('wp_head', 'wlwmanifest_link');

REST API

וורדפרס תומכת ב REST API שבאמצעותו תוכלו לתקשר עם האתר שלכם, לשלוח ולקבל תוכן ולגשת לתכנים שונים עם הרשאות מתאימות. למעשה תוכלו כך לבנות אפליקציה לטלפון לדוגמה בשפה שהיא לא php בכלל שתהיה הבלוג שלכם. כמובן האפשרויות הן עוד רבות. אבל אם אתם לא משתמשים בזה, תוכלו להסיר את הקישור מההדר שלכם.
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:

<link rel='https://api.w.org/' href='https://yourwebsite.com/wp-json/' />

כדי להסיר את זה מההדר ומעוד מקומות, הוסיפו את השורות הבאות לקובץ functions.php

remove_action('wp_head', 'rest_output_link_wp_head');
remove_action( 'template_redirect', 'rest_output_link_header', 11 );

Shortlink

שורטלינק נותן קישור מקוצר לפוסט בוורדפרס. אם אתם משתמשים במבנה url מומלץ אין ממש צורך בזה.
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:

<link rel='shortlink' href="https://yourdomain.com/?p=1">

כדי להסיר את זה מההדר ומעוד מקומות, הוסיפו את השורות הבאות לקובץ functions.php

remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('template_redirect', 'wp_shortlink_header', 11);

Post Relational Links

זהו תג שמראה על "פוסט קודם" ו-"פוסט הבא". התג הוא סטנדרד ווב שגוגל השתמשו בו גם בשביל SEO. העניין שגוגל פרסמו שהם כבר לא משתמשים בו ולכן אולי אפשר להוריד אותו מההדר. לעומת דברים אחרים במאמר, הפעם אני לא בטוח שעדיף להסיר את זה כי אולי מנועים אחרים כן משתשמים בזה ובנוסף זהו כאמור סטנדרד ווב ולא משהו שגוגל המציאו לכן אפשרי להשאיר. אבל אם תרצו להסיר, מיד תראו איך.

google rel pre\next

איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:

<link rel='prev' title='Title of post' href='https://yourdomain.com/post-slug-here/' />

כדי להסיר את הקישור מההדר, הוסיפו את השורה הבאה לקובץ functions.php

remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');

WordPress version

וורדפרס מדפיסה את הגרסה שלה בהדר. בין אם זה מזיק לאבטחת האתר ובין אם לא, אני לא רואה למה לא להסיר את זה.
איך זה נראה באתר שלכם? חפשו בהדר שורה שנראית בערך כך:

<meta name="generator" content="WordPress 5.5" />

כדי להסיר את זה מההדר ומעוד מקומות, הוסיפו את השורות הבאות לקובץ functions.php

remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_false');

RSS Feed

אני בטוח כולכם מכירים מה זה RSS, ואם לא תוכלו לקרוא כאן. בכל מקרה אם אין לכם באמת צורך בזה, ניתן להסיר.

כדי להסיר את זה מההדר ומעוד מקומות, הוסיפו את השורות הבאות לקובץ functions.php

add_filter('feed_links_show_posts_feed', '__return_false');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
add_filter('feed_links_show_comments_feed', '__return_false');

XML-RPC

עוד שיטה של "דיבור" עם אתר הוורדפרס שלנו באמצעות XML שנשלח על גבי HTTP. אם אתם לא יודעים שאתם משתמשים, אתם כנראה לא.

כדי להסיר את זה מההדר, הוסיפו את השורה הבאה לקובץ functions.php

add_filter('xmlrpc_enabled', '__return_false');

כדי למנוע גישה באמצעות htaccess:

<Files xmlrpc.php>
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
</Files>

Emojis

כולנו יודעים מה הם, וורדפרס תומכים בהם החל מגרסה 4.2. תוספת בקשה של קובץ JS שתכלס רובנו לא באמת צריכים.
כך תסירו את השימוש:

// Emojis Actions and Filters
add_action( 'init', 'disable_emojis' );

function disable_emojis() {
  remove_action('admin_print_styles', 'print_emoji_styles');
  remove_action('wp_head', 'print_emoji_detection_script', 7);
  remove_action('admin_print_scripts', 'print_emoji_detection_script');
  remove_action('wp_print_styles', 'print_emoji_styles');
  remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
  remove_filter('the_content_feed', 'wp_staticize_emoji');
  remove_filter('comment_text_rss', 'wp_staticize_emoji');
  remove_filter('the_content', 'convert_smilies', 20);
  add_filter('emoji_svg_url', '__return_false');
  add_filter('tiny_mce_plugins', 'disable_emojis_tinymce');
}

function disable_emojis_tinymce($plugins) {
     if(is_array($plugins)) {
         return array_diff($plugins, array('wpemoji'));
     } else {
         return array();
     }
 }

Oembed

וורדפרס הוסיפה את היכולת לקחת URL של סרטון, של ציוץ או של פוסט ולהפוך אותו לתצוגה מקדימה חיה של התוכן. זה דבר נחמד עקרונית אבל אם אתם לא משתמשים, כרגיל תחסכו. עדיין תוכלו להשתמש ב iframe כדי להציג סרטון למשל.
כך תסירו את השימוש:

add_action('init', static function() {
	// Remove the REST API endpoint.
	remove_action('rest_api_init', 'wp_oembed_register_route');

	// Turn off oEmbed auto discovery.
	add_filter('embed_oembed_discover', '__return_false');

	// Don't filter oEmbed results.
	remove_filter('oembed_dataparse', 'wp_filter_oembed_result');

	// Remove oEmbed discovery links.
	remove_action('wp_head', 'wp_oembed_add_discovery_links');

	// Remove oEmbed-specific JavaScript from the front-end and back-end.
	remove_action('wp_head', 'wp_oembed_add_host_js');

	add_filter('tiny_mce_plugins', static function ($plugins) {
		return array_diff($plugins, array('wpembed'));
	});

	// Remove all embeds rewrite rules.
	add_filter('rewrite_rules_array', static function ($rules) {
		foreach($rules as $rule => $rewrite) {
			if (false !== strpos($rewrite, 'embed=true')) {
				unset($rules[$rule]);
			}
		}
		return $rules;
	});

	// Remove filter of the oEmbed result before any HTTP requests are made.
	remove_filter('pre_oembed_result', 'wp_filter_pre_oembed_result');
}, 9999 );

add_action('wp_footer', static function() {
        wp_dequeue_script( 'wp-embed' );
});

Hotlinks

הוטלינק מאפשר לך או לבעל אתר אחר, להציג באתר תמונה ישירות מאתר אחר. אם לך יש תמונה או תוכן אחר שמישהו מעוניין להציג באתר שלו, הוא יכול להציג אותה על חשבונך. כלומר, להשתמש במשאבי השרת שלך בשביל זה. ברוב המקרים מומלץ לא לאפשר את זה.
כדי לא לאפשר הוטלינקס, הוסיפו את השורות הבאות לקובץ htaccess: שימו לב שיש הערות שתצטרכו למחוק או להחליף בהתאם למה שרשום.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?your domain [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?bing.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?add more relevant domains [NC]
RewriteRule \.(webp|jpg|jpeg|png|gif|bmp|you can add here more file types)$ you can write here a url of image\page that you want to send the hotlink user [NC,R,L]

Dashicons

ספריית האייקונים שמשתמשים בה באדמין של וורדפרס. מדובר בקובץ CSS לא גדול אבל אפשר להסירו כל עוד אתם לא באדמין או אתם לא מנהלים.
כדי להסיר את השימוש, הוסיפו את השורות הבאות לקובץ functions.php:

add_action( 'wp_enqueue_scripts', 'deregister_dashicon' );

function deregister_dashicon() {
    if (current_user_can( 'update_core' )) {
        return;
    }
    wp_deregister_style('dashicons');
}

Self Pingback

זהו פינגבק עצמי כמו שהשם מעיד. פינגבק רגיל נוצר כשמישהו מאתר אחר שם קישור לבלוג שלכם. פינגבק עצמי זה כשאתם שמים קישור פנימי מפוסט אחד לאחר. את החיצוני אפשר לבטל דרך הגדרות דיון של וורדפרס. את הפינג העצמי תבטלו על ידי הקוד הבא בקובץ functions.php:

function unset_self_ping( &$links ) {
    $home = get_option( 'home' );
    foreach ( $links as $l => $link )
        if ( 0 === strpos( $link, $home ) )
            unset($links[$l]);
}
add_action( 'pre_ping', 'unset_self_ping' );

DNS Prefecth

ככלל דבר זה נועד כדי לשפר מהירות על ידי זה שמתבצע ברקע dns resolve אבל יתכן שתראו שם דברים נוספו על ידי וורדפרס או על ידי תבנית שאתם לא בהכרח רוצים. תוכלו להסיר את זה על ידי הקוד הבא בקובץ functions.php:

remove_action( 'wp_head', 'wp_resource_hints', 2 );

אם תרצו להיות יותר נקודתיים ולהסיר רק דומיינים מסוימים או להוסיף כאלה שלכם, תוכלו להשתמש בפילטר הבא בקובץ functions.php:

function customize_resource_hints( $urls, $relation_type ) { 
    // the function is per relation type so don't touch other rel except dns-prefetch
     if ($relation !== 'dns-prefetch') {
        return $urls;
    }

    // filter existing urls
    $urls = array_filter($urls, function ($url) {
        return condition for what you want to remove;
    });

// if you want you can create here more urls and then call 'array_merge' with the existing urls

    return $urls; //(or the newly created merged urls)
}; 

add_filter( 'wp_resource_hints', 'customize_resource_hints', 10, 2 );

Auto save & Revision

וורדפרס שומר אוטומטית את הפוסטים שלנו ויוצר גרסאות של הפוסטים. כדי להגדיל את מרווחי השמירה ולהגביל את הגרסאות שנשמרות הוסיפו את השורות הבאת לקובץ wp-config.php: שימו לב לשנות את הערות בהתאם.

define('AUTOSAVE_INTERVAL', how much seconds?);
define('WP_POST_REVISIONS', 3 or 4 it's enough IMO);

ETag

הפעם לא מדובר ביכולת של וורדפרס אבל בכל זאת אזכיר פה כי יש הרבה שאוהבים לבטל את זה. כדי להבין במדויק מה זה ETag, צריך להבין את המנגנון של HTTP Cache. תוכלו לקרוא בקצרה כאן.
אבל למה בכלל לבטל? זהו שלא בהכרח כדאי. הסיבה העיקרית היא כמו שיאהו כתבו על הנושא, ETag הוא פר שרת, כלומר אם התוכן קיים אצלכם משרת אחר ה- ETag יחזיר תשובה שאין את התוכן בקאש למרות שהוא אצלכם משרת אחר והוא ולידי. לכן מומלץ להשתמש ראשית ב Cache Control כמו שצריך ולהשתמש ב Last Modified. העניין הוא שיכול להיות שבעתיד הקרוב בכל מקרה קאש לא יהיה ואלידי אם הגיע משרת אחר (לפחות בכרום) ואז מנגנון ETag יותר מדויק ואמין. בכל מקרה אם החלטתם להסיר אותו, הוסיפו את השורות הבאות ל htaccess.

<IfModule mod_headers.c>
    Header unset ETag
</IfModule>
FileETag None

jQuery-Migrate

בשביל תאימות לאחור של JS וורדפרס יטען לכם את הסקריפט. הסיבה היתה מוצדקת אבל לא בטוח שאתם ספציפית תצטרכו את זה. היום בחצי השני של 2020, אם אתם עם תבנית ופלאגינים מעודכנים רוב הסיכויים שזה מיותר לכם אבל בדקו זאת בזהירות. אם החלטתם להסיר, הוסיפו את השורות הבאות לקובץ functions.php

add_action('wp_default_scripts', function ($scripts) {
    if (!empty($scripts->registered['jquery'])) {
        $scripts->registered['jquery']->deps = array_diff($scripts->registered['jquery']->deps, ['jquery-migrate']);
    }
});

סיכום

מקווה שלמדתם משהו ונעזרתם במאמר. יש הרבה דרכים לשפר את ביצועי האתר וכאן הראתי כמה דברים שכולם קשורים ליכולות מובנות שניתן להסיר. חלקם – כמו שהזכרתי בתחילת המאמר – יתרום גם לאבטחת האתר. לפני שתשנו משהו, היו בטוחים שאתם מבינים במה מדובר ואיך לעשות את השינוי. אם יש לכם שאלה כלשה, תוכלו להגיב פה ואענה.

שיפור מהירות וביצועים של אתרים באינטרנט

מוזמנים להצטרף לקבוצת הפייסבוק היחידה בישראל העוסקת רק בשיפורי ביצועים

0 0 דירוגים
דרג את הפוסט

תוכן עניינים

אם יש לכם שאלות על הפוסט או רוצים להעיר משהו, השאירו תגובה ואענה בהקדם.

הרשמה
Notify of
2 תגובות
חדש ביותר
הישן ביותר הכי הרבה דירוגים
Inline Feedbacks
הצג את כל התגובות

גם הפוסטים הבאים יעניינו אותך

2
0
אשמח לשמוע את דעתכם, מוזמנים להשאיר תגובהx