ישנם לא מעט דרכים בכדי לשפר את זמן עליית אתר הוורדפרס שברשותכם כפי שכתבתי במדריך לשיפור מהירות אתרי וורדפרס. אחד מהשלבים הוא לשנות את מיקום תיקיית התמונות (Uploads) ולטעון אלו מדומיין אחר.
כפי שאתם יודעים, וורדפרס מאחסנת את כל התמונות והקבצים שאתם מעלים בתיקיית wp-content/uploads
, נכון יהיה להעביר את התוכן של של תיקייה זו אל מחוץ לתיקייה הראשית של וורדפרס לדומיין משני (Sub-Domain) או דומיין אחר.
ברגע שתמונות נקראות מדומיין אחר ולא מהדומיין של האתר, מתאפשרת הורדה מקבילית (Parallel Download) של התמונות בדפדפן ובכך זמן טעינת האתר משתפר בצורה משמעותית.
שימו לב – פוסט זה אינו רלוונטי לבעלי אתר העובד בפרוטוקול HTTP2 מכיוון והוא תומך כברירת מחדל בהורדה מקבילית של תמונות.
השלבים לשינוי מיקום תיקיית התמונות
הנה השלבים שיש לבצע בכדי לשנות את מיקום התמונות באתר וורדפרס לסאב דומיין, מומלץ תמיד לבצע גיבוי למסד הנתונים ולקובץ ה htaccess
לפני ביצוע פעולות עליהם.
לצורך פשטות ההסבר, נניח שאתר הוורדפרס שלכם הוא http://your-domain.co.il
והסאב דומיין שפתחתם הינו http://media.your-domain.co.il
.
1.העתיקו את התוכן מהדומיין הראשי לסאב דומיין
גשו לתיקיית wp-content/uploads
בשרת והעבירו את התוכן שלה לתוך הספריה הראשית של הסאב דומיין שפתחתם.
2. שנו את מיקום ברירת המחדל של תיקיית ה Uploads
בגירסאות וורדפרס קודמות לגירסה 3.5 הייתה האפשרות לבצע זאת דרך לוח הבקרה של וורדפרס תחת הגדרות > מדיה, בכדי לבצע זאת בגירסאות חדשות יותר יש להשתמש בתוסף פשוט הנקרא WP Original Media Path.
התקינו אותו וגשו להגדרות המדיה ותראו את השדות הבאים:
תחת Full URL path to files הכניסו את כתובת הסאב דומיין שלכם http://media.your-domain.co.il
, וודאו כי אין בסוף הכתובת את הסימן ״/״
.
תחת Store uploads in this folder צריך להכניס את ה Absolute Path של תיקיית הסאב דומיין על השרת. לדוגמא var/www/vhosts/your-domain.co.il/media.your-domain.co.il/
בכדי לדעת את ה path הנכון עקבו אחר השלבים הבאים:
א. צרו קובץ חדש בשם path.php והוסיפו לו את הקוד הבא:
<?php
$p = getcwd();
echo $p;
?>
ב. העתיקו את הקובץ לספרייה הראשית של הסאב דומיין שפתחתם.
ג. גשו ל http://media.your-domain.co.il/path.php
בדפדפן והעתיקו את ה Absolute Path לשדה Store uploads in this folder.
ד. שמרו את ההגדרות.
3. שנו את המיקום של התמונות הישנות
בפעולות הקודמות שינינו את המיקום אליו יעלו תמונות חדשות שתוסיפו למיקום החדש בסאב דומיין, אך מה לגבי התמונות שכבר קיימות באתר.
על מנת לשנות את מיקומם נאלץ לעשות זאת עם פקודת SQL דרך מסד הנתונים. גשו למסד הנתונים שלכם והריצו את הפקודה הבאה, שימו לב כי במידה והטבלה שלכם היא עם prefix שונה ואינה נקראית wp_posts שנו את הקוד בהתאם.
UPDATE wp_posts SET post_content = REPLACE(post_content,'http://your-domain.co.il/wp-content/uploads/','http://media.your-domain.co.il/')
4. בצעו הפנייה (redirection) של תמונות הישנות לסאב דומיין החדש
סיימנו את הפעולות באתר ובמסד הנתונים, אך גוגל כבר סרק ואינדקס את התמונות הישנות באתר. ביצוע הפנייה מכתובת התמונות הישנה לכתובת החדשה תאפשר לגוגל לדעת שהתמונות הינם אותן תמונות.
הוסיפו את הקוד הבא לקובץ htaccess
:
RedirectMatch 301 ^/wp-content/uploads/(.*)$ http://media.yourdomain.co.il/$1
מקווה שמדריך זה עזר לכם, כמו תמיד אשמח אם תגיבו, תשתפו ותתנו הערות…
האם הזזת תיקיית המדיה לסאב דומיין לא תשפיע על הקידום האורגני לרעה מאחר ובמצב שאנחנו יוצרים, התמונות לא יושבות כביכול על הדומיין הראשי ולכן התרומה שלהן לקידום תעלם? (אולי אני כותב שטויות אבל חייב לוודא הריגה לפני המהלך)
היי אסף,
הזזת התיקייה לסאב דומיין אינה תשפיע על הקידום האורגני, הרי כשאתה משתמש ב CDN לדוגמא, כרבים מהאתרים הגדולים בעולם, התמונות גם כן מוגשות מכתובת אחרת וזה אינו פוגע בקידום האורגני שלהם, אז אל דאגה..
עם זאת אסף, אני חושב שמומלץ להתייעץ עם אנשי SEO לגבי זה…
האם יש דרך להעלות את הקבצים לשרת נפרד ממש ?
היי רבין,
כן, בדיוק באותה דרך…
אני אחדד את השאלה שלי,
אני מחפש דרך שקבצים שמועלים דרך הממשק MEDIA של WP, יעלו\ישמרו על מכונה נפרדת, ע"י העתקה ב-SSH\SFTP. (נגיד מכונה שהיא ה-CDN שלי)
התוסף WP Original Media Path לא נראה שהוא נותן מענה לצורך הזה, הוא רק חושף אפשרות שהוסרה בגרסאות החדשות של WP לגבי תקיית המדיה.
היי רבין,
לצערי איני יודע לתת לך תשובה על כך, נקווה שגולשים אחרים יענו, במידה ומצאת פיתרון אשמח אם תשתף אותו..
למיטב ידיעתי אפשר לעשות את זה באמצעות שורת קוד אחת בקונפיג wp-config.php
define('UPLOADS', 'http://images.mydomain.com');
מבחינת קידום אתרים הדבר הזה מועדף מפני שבעוד שכשכהתמונות נמצאות בתיקית Uploads באותו דומיין שהתבנית נמצאת בו עם כל קבצי ה-CSS וה-JS, כשהאתר טוען את הכל מהשרת הוא מסוגל רק מספר מסוים של שאילתות מכל אתר – 10 בד"כ. אם זה מאוחסן בסאבדומיין זה נחשב מאתר אחר ואז הוא יוכל לטעון 20 קבצים בבת אחת וזמן טעינת העמוד יהיה מהיר יותר.
השיטה שלך לא עובדת זה רק מוסיף עוד כתובת לכתובת הקיימת ולא רואים את התמונות באתר
היי, האם מספיק לשנות רק את טבלת wp_posts? מה קורה אם יש פלאגינים ששואבים תמונות מתיקיית המדיה, צריך לשנות להם גם?
היי חופית,
מאמר זה מתייחס אך ורק לתמונות הפוסטים. במידה והפלאגין הותקן אחרי השינוי לא אמורה להיות בעיה, במידה והפלאגין הותקן לפני, איני יודע לתת לך תשובה.. זה נורא תלוי בפונקציונליות של הפלאגין עצמו.. בהצלחה !
תודה על התשובה המהירה 🙂
היי,
עושה רושם שמאז שביצעתי את השינוי הזה, כאשר מנסים לשתף פוסט בפייסבוק הוא מזהה את האתר כספאם ומבקש לבצע security check
הוא כותב כך:
It looks like a link that you're sharing might be unsafe. Please remove this link:
http://media.example.com/2015
If you're sure you want to share this link, please complete the security check below.
ואז יש קפאצ'ה. גם כשמאשרים את זה אז כמישהו רוצה להגיע לפוסט ע"י לחיצה על הקישור הוא מקבל הודעה שהאתר לא בטוח וצריך לאשר שבאמת רוצים לעבור לאתר.
זה יוצר ללקוח שלי נזק תדמיתי קשה ומעבר לכך פייסבוק עלולים לחסום אותו על היותו ספאמר ויותר הוא לא יוכל לפרסם את האתר שלו בפייסבוק ולשתף שם תכנים.
האם נתקלתם בזה בעבר ואם כן איך ניתן לפתור את זה?
זה דחוף!
תודה
חופית
כתבה מאוד מעניינת והייתי רוצה להתנסות בפעולה הזאת. הדבר היחיד שלא הבנתי, זה על איזה טבלה בדטה בייס אני אמורה להריץ את הפקודה? כלומר, אין לי אף טבלה שהיא wp_posts.
יש לי zbt_posts ואולי יותר רלוונטי zbt_media_file_manager_log.
בקיצור – אודה לעזרה.
חוץ מזה, רועי, אשמח אם תיצור איתי קשר – אני מחפשת תקשורת גם בתשלום עם בונה אתרים חיצוני.
היי עופר, שם הטבלה הוא בהתאם ל prefix של הדטאבייס שבחרת בהתקנת הוורדפרס. כברירת מחדל שמה wp_posts אך יכולה להיות עם כל prefix שתבחר. תוכל לוודא מה ה prefix שלך על ידי מבט ב table_prefix$ בקובץ wp-config.php בספרייה הראשית של וורדפרס.
תודה רבה. אולי לא הבהרתי את עצמי אבל בעיקר מוזר לי המילה posts כי הרי מדובר במדיה ולא בפוסטים. אז במקרה שלי אני אמורה לבחור את הטבלה בדטה בייס שקוראים לה zbt_posts?
כלומר לא לבצע את השינוי על כל הדטה בייס?
בדיוק. רק על הטבלה zbt_posts…
ממש תודה.
אתקשר עוד שעה.
היי,
מאוד שימושי ומדריך מושקע, תודה רבה.
הייתי רוצה לשאול לגבי השינוי ב DB.
במקרה שלי אני לא משתמש בפוסטים באתר, כל התמונות הן בעמודים שיצרתי ..
איך אני אמור לבצע את זה?
אשמח לתשובה שתעזור לי 🙂
תודה רבה!
היי אושרי,
גם עמודים וגם פוסטים נמצאים בדטאבייס תחת wp_posts – פקודת ה sql שאתה צריך להשתמש בה זהה…
האם אפשר להחזיר תמונות שהסרתי לפני כמה חודשים ???
תודה על המאמר שנראה מאד מועיל.
האם לדעתך ניתן להשאיר את ספרית המדיה במקומה ולהגדיר את ספרית הסאבדומיין הראשית כמשוייכת אליה. היתרון בזה ברור – אם הוא אפשרי.
שאר השלבים של התהליך ישארו דומים.
אם לא ניתן אשמח להסבר למה…
שוב תודה
איציק
היי
תודה על המאמר אך נתקלתי בעיה קטנה
אני משתמש בפלאגין Use Any Font אז לפני שהתחלתי לבצע את כל הפעולות של המאמר מחקתי את הפלאגין ואת התיקיה של הפונטים שהוא העלה.
לאחר מכאן ביצעתי את הפעולות והכל עובד תקין אך כאשר החזרתי את הפלאגין ואני מנסה דרך הפלאגין Use Any Font לעלאות פונטים הוא רושם שלא מוצא את הנתיב… למה?
זו שאלה טובה, איני יודע לצערי לתת לך תשובה….
אם האתר פועל עם SSL, האם צריך גם שהסאב-דומיין יהיה עם SSL?
עד כמה שידוע לי, התשובה היא כן. גם הסאב-דומיין צריך להיות עם SSL. עם זאת, למיטב הבנתי ישנם מספר דרכים לעקוף זאת אך איני בקיא מספיק בפרטים בכדי לפרט על כך…
איך ניתן לדעת מה השם של הטבלה שאני רוצה לשנות ?
לדו' אני רוצה לשנות את כל התמונות של woocommerce
תודה
עד כמה שאני יודע התמונות של ווקומרס גם כן נשמרות בטבלה wp_posts אך איני בטוח. אם תגלה את התשובה אשמח אם תשתף 🙂
מאמר יפה!
יש לי שאלה שכנראה תהיה קשה… נגיד ואני רוצה את התמונות לעלות לחשבון נפרד באותו השרת.
המטרה היא שקבצי המדיה לא יהיו בתיקיית של האתר בכל לילה שנעשה גיבוי (CP).
היי אבי, לא יודע לענות לך על זה.
אני חושב שהפתרון צריך להיות דווקא ברמת הגיבוי, כלומר למצוא פתרון שמאפשר לך לקבוע לאיזה תיקיות יבוצע גיבוי ולאילו לא…
שאלה שאולי קצת קשורה.. לגבי התקנת וורדפרס מספר פעמים באותו חשבון אחסון, האם זה מומלץ? כרגע יש לי אתר שהמערכת מותקנת על התיקיה הראשית (public_html). אני רוצה לבנות עוד מיניסייט שיהיה תחת הדומיין הנוכחי, אך אתר נפרד לחלוטין=התקנת וורדפרס נוספת בתיקיה חדשה. הם זה עלול לשבש לי את המערכות?
בהזדמנות זו, רציתי לציין שאני ממש נהנית להכנס לבלוג שלך ולנבור במאמרים, רואים את ההשקעה והטיפוח, שמים לב לשדרוגים הקטנים היפים והמועילים. זה מוסיף המון.
תודה!
היי דסי,
שמח שאת נהנית מהתוכן 🙂 אין שום בעיה עקונית ליצור אתר חדש על אותו אחסון. רק תוודאי כי יש לך אפשרות ליותר ממסד נתונים אחד באחסון שלך (גם את זה ניתן לעקוף). פשוט צרי תיקיה נפרדת, תחת public_html או צרי סאבדומיין דרך cPanel שייצור עבורך תיקייה רלוונטית.