טעינת ספריות חיצוניות - מcdn או הגשה עצמית?
-
אם יש לי קבצי html + css + js סטטיים, שאני משתמש בהם בספריות שונות, כמו jQuery, axios, awesome-notifications וכו'.
השאלה איך עדיף להגיש את הקבצי css וjs החיצוניים האלה - באמצעות cdnים אמינים כמו unpkg או cdnjs, או להוריד את הקבצים ולשים אותם בתוך התקיה של הפרויקט, ולטעון אותם משם דרך האקספרס?
תודה רבה! -
@צדיק-תמים אמר בטעינת ספריות חיצוניות - מcdn או הגשה עצמית?:
ולשים אותם בתוך התקיה של הפרויקט, ולטעון אותם משם דרך האקספרס? ולשים אותם בתוך התקיה של הפרויקט, ולטעון אותם משם דרך האקספרס?
האפשרות לשים אותם בתיקיה של הפרוייקט היא הגיונית, אבל לא "לטעון אותם דרך האקספרס", האקספרס לא עשוי ולא מומלץ לטעינת קבצים סטטית של CSS וJS וכדומה. הוא עושה את זה לאט ועל חשבון הטריד של נוד שרץ.
אם אתה שם בתיקיית הפרוייקט אתה צריך לדאוג, שאפאצ'י או nginx או שירות אינטרנט כל שהוא יגיש את התיקיה הזו בצורה סטטית.
אבל גם זה בד"כ איטי יותר מCDN. זה ממש קל לבדוק, תטען את שניהם ותפתח גלישה בסתר ותראה בלשונית ההNetwork את ההבדל בזמן וגם בגודל (זה דחוס, ודחוס טוב).זה בלי לקחת בחשבון את מעלת המטמון (שבספריות מפורסמות מCDN מובילים אז יהיה לרוב קאש בדפדפן, משא"כ מהאתר שלך פעם ראשונה באתר שלך תמיד תחייב טעינה מלאה)(נמחק כי זה לא נכון כיום).
אז מה הצד לא להשתמש בCDN?
יש מקרים שזה אינטרנט חסום/מסונן/פנימי ואתה לא רוצה להיות תלוי בשום דבר חיצוני
ויש מקרים בהם אתה עורך שינויים בספריה, זה מצוי בספריות עם משתנים כמו bootstrap שאפשר לבנות אותה מקבצי SASS עם קצת הבדלים ואז הפלט הוא ייחודי ואין לך איך להשתמש בCDN. -
@dovid אמר בטעינת ספריות חיצוניות - מcdn או הגשה עצמית?:
אם אתה שם בתיקיית הפרוייקט אתה צריך לדאוג, שאפאצ'י או nginx או שירות אינטרנט כל שהוא יגיש את התיקיה הזו בצורה סטטית.
מה זה אומר?
לגבי הבדיקה, כרגע הפרויקט עדיין במחשב שלי אופליין ככה שבוודאות זה יהיה יותר מהיר מאשר טעינה מהרשת... אחרי שהוא יהיה מקוון, אני יוכל לבדוק את זה...זה דחוס, ודחוס טוב
אני יכול להוריד את הקובץ הדחוס ואותו להגיש... לא?
ויש מקרים בהם אתה עורך שינויים בספריה, זה מצוי בספריות עם משתנים כמו bootstrap שאפשר לבנות אותה מקבצי SASS עם קצת הבדלים ואז הפלט הוא ייחודי ואין לך איך להשתמש בCDN.
מה עם CDN שאתה מעלה את הקבצים, כמו זה?
-
@צדיק-תמים במצב פיתוח אתה יכול להשתמש בטעינה מקומית, ואפילו בstatic של אקספרס.
אבל כיון שמצב ייצור יש מעלות לCDN, אפםשר כבר בפיתוח להשתמש בו.הדחיסה עליה היא מדבר זה דחיסה ברמת פרוטוקול הHTTP, אתה לא יכול ואמור להגיש קבצים דחוסים, שירות האינטרנט דוחס במידת הצורך וההגדרה והדפדפן פותח את הדחיסה.
לגבי הCDN אכן יש לו מעלות אפילו בקבצים שלך, ויש לו מעלות שלא פירטתי כי הם פחות רלוונטיים לפרוייקטים קטנים, אבל השורה התחתונה זה CDN אלא"כ יש לך סיבה הפוכה.
-
@dovid אמר בטעינת ספריות חיצוניות - מcdn או הגשה עצמית?:
@צדיק-תמים במצב פיתוח אתה יכול להשתמש בטעינה מקומית, ואפילו בstatic של אקספרס.
במצב ייצור יש בעיית ביצועים להגיש אותם עם הstatic של אקספרס? כי לזה התכוונתי שאני "מגיש דרך האקספרס". סליחה אם לא הייתי מספיק ברור...
אגב אם אפשר לעדכן את גרסת הפורום אשמח, זה ממש משגע שבכל ציטוט של משפט אחד הכל נכנס לציטוט וצריך לערוך ידנית... -
@צדיק-תמים אמר בטעינת ספריות חיצוניות - מcdn או הגשה עצמית?:
במצב ייצור יש בעיית ביצועים להגיש אותם עם הstatic של אקספרס? כי לזה התכוונתי שאני "מגיש דרך האקספרס".
זה מה שהבנתי וזה מה שהתכוונתי.
זה יהיה מהר ומצויין, אבל זה לא הכלי המקצועי עבור הגשת קבצים סטטיים, למשל אין לזה בכלל קאש. -
@dovid אמר בטעינת ספריות חיצוניות - מcdn או הגשה עצמית?:
זה בלי לקחת בחשבון את מעלת המטמון (שבספריות מפורסמות מCDN מובילים אז יהיה לרוב קאש בדפדפן, משא"כ מהאתר שלך פעם ראשונה באתר שלך תמיד תחייב טעינה מלאה)
זה היה פעם. נראה לי שהיום זה כבר לא ככה:
https://developer.chrome.com/blog/http-cache-partitioning -
עם המעלה שאתה מנסה להשיג היא מהירות טעינה של הדף
אז ממחקר שעשיתי פעם, הבנתי שאם יש לך אפשרות להעלות את כל הספריות לקובץ אחד ולטעון אותו מהשרת שלך, זה יהיה יותר מהיר מלטעון הרבה CDN, אבל בהנחה ואי אפשר, אז CDN הוא יותר מהיר.היום יש את HTTP 3, אז יכול להיות שבכל מקרה CDN יותר מהיר, לא בדקתי את זה.
בנטפרי אין HTTP 3 עד כמה שידוע לי.