אחסון והצגה של קבצים סטטיים

לעתים קרובות, אפליקציות צריכות להציג קבצים סטטיים כמו JavaScript, תמונות ו-CSS, בנוסף לטיפול בבקשות דינמיות. אפליקציות בסביבה הרגילה יכולות להציג קבצים סטטיים מאפשרות כמו Cloud Storage, להציג אותם ישירות או להשתמש ברשת להעברת תוכן (CDN) של צד שלישי. Google Cloud

אירוח אתר סטטי ב- Google Cloud יכול להיות זול יותר משימוש בספק אירוח מסורתי, כי Google Cloud מספק רמת שירות בחינם. 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:

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

    gcloud storage buckets create gs://<var>your-bucket-name</var>
    
  2. מגדירים את מדיניות ה-IAM כך שתאפשר גישת קריאה ציבורית לפריטים בקטגוריה.

    gcloud storage buckets add-iam-policy-binding gs://<var>your-bucket-name</var> --member=allUsers --role=roles/storage.objectViewer
    
  3. מעלים פריטים לקטגוריה. הפקודה 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 .

הצגת קבצים ישירות מהאפליקציה

כדי להציג קבצים סטטיים בסביבה רגילה, מגדירים את ה-handlers בקובץ app.yaml באמצעות הרכיבים static_dir או static_files.

התוכן בקבצים הסטטיים או בספריות הסטטיות לא מושפע מהגדרות ההתאמה לגודל בקובץ app.yaml. בקשות לקבצים סטטיים או לספריות סטטיות מטופלות ישירות על ידי התשתית של App Engine, ולא מגיעות לזמן הריצה של השפה של האפליקציה.

הגדרת רכיבי handler לקבצים סטטיים

כדי להגדיר את האפליקציה כך שתציג את הספרייה ./public מכתובת ה-URL /static, צריך להגדיר handler בקובץ app.yaml.

בדוגמה הבאה אפשר לראות איך מציגים את הקבצים הסטטיים של ספריית ./public של אפליקציה לדוגמה. התבנית של הדף index.html באפליקציה הזו מורה לדפדפן לטעון את הקובץ main.css, לדוגמה:

<link type="text/css" rel="stylesheet" href="/static/css/main.css">

הספרייה ./public מוגדרת ברכיב static_dir של קובץ app.yaml של הפרויקט:

handlers:
  - url: /favicon\.ico
    static_files: favicon.ico
    upload: favicon\.ico

  - url: /static
    static_dir: public

  - url: /.*
    secure: always
    redirect_http_response_code: 301
    script: auto

הקטע handlers בדוגמה שלמעלה מטפל בשלוש תבניות URL:

  • ה-handler‏ /favicon.ico ממפה בקשה ספציפית ל-/favicon.ico לקובץ בשם favicon.ico בתיקיית השורש של האפליקציה.

  • ה-handler‏ /static ממפה בקשות לכתובות URL שמתחילות ב-/static. כש-App Engine מקבל בקשה לכתובת URL שמתחילה ב-/static, הוא ממפה את שאר הנתיב לקבצים בספרייה ./public. אם נמצא קובץ מתאים בספרייה, התוכן של הקובץ הזה מוחזר ללקוח.

  • ה-handler‏ /.* מתאים לכל כתובות ה-URL האחרות ומפנה אותן לאפליקציה.

תבניות של נתיבי כתובות URL נבדקות לפי הסדר שבו הן מופיעות ב-app.yaml, ולכן צריך להגדיר את התבנית של הקבצים הסטטיים לפני התבנית של /.*. מידע נוסף זמין בapp.yaml.

שימו לב: כדי להשתמש ב-handlers סטטיים, צריך לציין את הרכיב entrypoint ב-app.yaml או לציין handler עם script שמוגדר ל-auto.

הצגה מרשת להעברת תוכן של צד שלישי

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

כדי לשפר את הביצועים, מומלץ להשתמש ב-CDN של צד שלישי שתומך ב-CDN Interconnect.