לעתים קרובות, אפליקציות צריכות להציג קבצים סטטיים כמו JavaScript, תמונות ו-CSS, בנוסף לטיפול בבקשות דינמיות. אפליקציות בסביבה הגמישה יכולות להציג קבצים סטטיים מאפשרות כמו Cloud Storage, להציג אותם ישירות או להשתמש ברשת להעברת תוכן (CDN) של צד שלישי. Google Cloud
הצגת קבצים מ-Cloud Storage
ב-Cloud Storage אפשר לארח נכסים סטטיים לאפליקציות אינטרנט דינמיות. היתרונות של שימוש ב-Cloud Storage במקום להציג ישירות מהאפליקציה כוללים:
- Cloud Storage פועל למעשה כרשת להעברת תוכן. לא נדרש שום שינוי בהגדרות, כי כברירת מחדל כל אובייקט שקריא לכולם נשמר במטמון ברשת הגלובלית של Cloud Storage.
- העומס על האפליקציה יופחת על ידי העברת הנכסים הסטטיים ל-Cloud Storage. בהתאם למספר הנכסים הסטטיים ולתדירות הגישה, העברה כזו יכולה להפחית באופן משמעותי את עלות הפעלת האפליקציה.
- חיובי רוחב פס בשביל גישה לתוכן בדרך כלל זולים יותר ב-Cloud Storage.
אפשר להעלות את הנכסים ל-Cloud Storage באמצעות Google Cloud CLI או Cloud Storage API.
ספריית הלקוח של Google Cloud מספקת לקוח ל-Cloud Storage, לאחסון ולאחזור נתונים באמצעות Cloud Storage באפליקציית App Engine.
דוגמה להצגת תוכן מקטגוריה של Cloud Storage
בדוגמה הזו נוצרת קטגוריה של Cloud Storage ומועלים אליה נכסים סטטיים באמצעות ה-CLI של gcloud:
יוצרים קטגוריה. מקובל, אבל לא חובה, לתת לקטגוריה שם שזהה למזהה הפרויקט. שם הקטגוריה חייב להיות ייחודי באופן גלובלי.
gcloud storage buckets create gs://<var>your-bucket-name</var>מגדירים את מדיניות ה-IAM כך שתאפשר גישת קריאה ציבורית לפריטים בקטגוריה.
gcloud storage buckets add-iam-policy-binding gs://<var>your-bucket-name</var> --member=allUsers --role=roles/storage.objectViewerמעלים פריטים לקטגוריה. הפקודה
rsyncהיא בדרך כלל הדרך הכי מהירה וקלה להעלות ולעדכן נכסים. אפשר גם להשתמש ב-cp.gcloud storage rsync ./static gs://<var>your-bucket-name</var>/static --recursive
עכשיו יש לכם גישה לנכסים הסטטיים דרך https://storage.googleapis.com/<var>your-bucket-name</var>/static/....
לפרטים נוספים על השימוש ב-Cloud Storage להצגת נכסים סטטיים, כולל הצגה משם דומיין בהתאמה אישית, אפשר לעיין במאמר איך לארח אתר סטטי.
הצגת קבצים משירותים אחרים Google Cloud
אפשר גם להשתמש ב-Cloud CDN או בשירותי אחסון אחרים של Google Cloud .
הצגת קבצים ישירות מהאפליקציה
בדרך כלל קל להציג קבצים מהאפליקציה, אבל יש כמה חסרונות שכדאי לקחת בחשבון:
- בקשות לקבצים סטטיים יכולות להשתמש במשאבים שאחרת היו משמשים לבקשות דינמיות.
- בהתאם להגדרה, הצגת קבצים מהאפליקציה עלולה לגרום לזמן אחזור בתגובה, מה שיכול להשפיע גם על מועד היצירה של מופעים חדשים לטיפול בעומס.
דוגמה להצגת קבצים סטטיים באפליקציה
המשך
בדוגמה הבאה אפשר לראות איך להציג קבצים סטטיים באמצעות האפליקציה. אפשר להשתמש באפליקציית הדוגמה במדריך הזה לכל גרסה נתמכת של Go. לשם כך, צריך לציין את גרסת זמן הריצה ואת מערכת ההפעלה בקובץ app.yaml.
אתם יכולים להשתמש ב-http.FileServer או ב-http.ServeFile כדי להציג קבצים ישירות מהאפליקציה.
Java
בדוגמה הבאה מוצגות דרכים להצגת קבצים סטטיים באמצעות האפליקציה. אפשר להשתמש באפליקציה לדוגמה במדריך הזה לכל גרסה נתמכת של Java. לשם כך, צריך לציין את גרסת זמן הריצה ומערכת ההפעלה בקובץ app.yaml.
קונטיינר ה-servlet של זמן הריצה של Java ישתמש במתאר הפריסה, בקובץ web.xml של האפליקציה, כדי למפות כתובות URL ל-servlet, כולל נכסים סטטיים. אם לא מציינים web.xml, המערכת משתמשת בברירת מחדל שממפה את כל הפריטים לסרוולט ברירת המחדל.
בדוגמה הזו, ./src/main/webapp/index.html מתייחס לגיליון סגנונות שמוגש מ-/stylesheets/styles.css.
הקובץ styles.css נמצא במיקום ./src/main/webapp/stylesheets/styles.css.
אתם יכולים להגדיר באופן מפורש איך קבצים סטטיים מטופלים בקובץ web.xml. לדוגמה, אם אתם רוצים למפות בקשות לכל הקבצים עם הסיומת .jpg:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
אם אתם משתמשים במסגרת אינטרנטית, כמו Play, תצטרכו לעיין בתיעוד של המסגרת בנושא נכסים סטטיים.
Node.js
בדוגמה הבאה רואים איך להציג קבצים סטטיים באמצעות האפליקציה. אפשר להשתמש באפליקציה לדוגמה שבמדריך הזה בכל גרסה נתמכת של Node.js. לשם כך צריך לציין את גרסת זמן הריצה ואת מערכת ההפעלה בקובץ app.yaml.
רוב מסגרות האינטרנט כוללות תמיכה בהצגת קבצים סטטיים. בדוגמה הזו, האפליקציה משתמשת בתוכנת הביניים express.static כדי להציג קבצים מהספרייה ./public בכתובת ה-URL /static.
התצוגה מתייחסת אל /static/main.css.
גיליון הסגנונות עצמו נמצא בכתובת ./public/css, והוא מוגש מ-/static/main.css.
מסגרות Node.js אחרות, כמו Hapi, Koa ו-Sails, בדרך כלל תומכות בהצגת קבצים סטטיים ישירות מהאפליקציה. לפרטים על הגדרה ושימוש בתוכן סטטי, אפשר לעיין במסמכי התיעוד שלהן.
PHP
סביבת זמן הריצה של PHP מריצה את nginx כדי להציג את האפליקציה, שמוגדרת להציג קבצים סטטיים בספריית הפרויקט. צריך להגדיר את ספריית השורש של המסמך על ידי ציון document_root בקובץ app.yaml. אפשר להשתמש באפליקציה לדוגמה שבמדריך הזה לכל גרסה נתמכת של PHP על ידי ציון גרסת זמן הריצה ומערכת ההפעלה בקובץ app.yaml.
Python
בדוגמה הבאה מוצגות דרכים להצגת קבצים סטטיים באפליקציה. אפשר להשתמש באפליקציה לדוגמה במדריך הזה לכל גרסה נתמכת של Python. לשם כך, צריך לציין את גרסת זמן הריצה ואת מערכת ההפעלה בקובץ app.yaml.
רוב מסגרות האינטרנט כוללות תמיכה בהצגת קבצים סטטיים. בדוגמה הזו,
האפליקציה משתמשת ביכולת המובנית של Flask
להצגת קבצים בספרייה ./static מכתובת ה-URL /static.
האפליקציה כוללת תצוגה שמעבדת את התבנית. Flask מציג אוטומטית את כל מה שנמצא בספרייה ./static בלי צורך בהגדרה נוספת.
התבנית שעברה רינדור על ידי התצוגה כוללת גיליון סגנונות שנמצא בכתובת /static/main.css.
גיליון הסגנונות נמצא ב-./static/main.css.
מסגרות Python אחרות, כמו Django, Pyramid ו-Bottle, בדרך כלל תומכות בהצגת קבצים סטטיים ישירות מהאפליקציה. לפרטים על הגדרה ושימוש בתוכן סטטי, אפשר לעיין במסמכים שלהן.
Ruby
רוב מסגרות האינטרנט כוללות תמיכה בהצגת קבצים סטטיים.
בדוגמה הבאה מוצגות דרכים להצגת קבצים סטטיים באפליקציה. אפשר להשתמש באפליקציית הדוגמה במדריך הזה לכל גרסה נתמכת של Ruby. לשם כך, צריך לציין את גרסת זמן הריצה ואת מערכת ההפעלה בקובץ app.yaml.
Sinatra
מסגרת האינטרנט Sinatra מציגה קבצים מהספרייה ./public כברירת מחדל. האפליקציה הזו כוללת תצוגה שמתייחסת אל /application.css.
גיליון הסגנונות נמצא בכתובת ./public/application.css, והוא מוגש מ-/application.css.
Ruby on Rails
מסגרת האינטרנט Ruby on Rails שולחת קבצים מהספרייה ./public כברירת מחדל. אפשר גם ליצור קובצי JavaScript ו-CSS סטטיים באמצעות צינור הנכסים של Rails.
אפליקציות לדוגמה האלה מכילות תצוגת פריסה שכוללת את כל גיליונות הסגנונות של האפליקציה.
גיליון הסגנונות הוא קובץ .css שנמצא במיקום ./public/application.css.
כברירת מחדל, אפליקציות Rails לא יוצרות נכסים סטטיים או מציגות אותם כשהן פועלות בסביבת ייצור.
זמן הריצה של Ruby מריץ את rake assets:precompile במהלך הפריסה כדי ליצור נכסים סטטיים, ומגדיר את משתנה הסביבה RAILS_SERVE_STATIC_FILES כדי להפעיל הצגה של קבצים סטטיים בסביבת הייצור.
.NET
בדוגמה הבאה מוצגות דרכים להצגת קבצים סטטיים באפליקציה. אפשר להשתמש באפליקציה לדוגמה במדריך הזה לכל גרסה נתמכת של .NET. לשם כך, צריך לציין את גרסת זמן הריצה ואת מערכת ההפעלה בקובץ app.yaml.
כדי להפעיל את האפשרות להצגת קבצים סטטיים, מוסיפים את השורה:
הצגת תוכן של צד שלישי מרשת להעברת תוכן
אתם יכולים להשתמש בכל CDN חיצוני של צד שלישי כדי להציג את הקבצים הסטטיים שלכם ולשמור במטמון בקשות דינמיות, אבל יכול להיות שזמן הטעינה של האפליקציה שלכם יתארך והעלות תגדל.
כדי לשפר את הביצועים, מומלץ להשתמש ב-CDN של צד שלישי שתומך ב-CDN Interconnect.