xhtml apache מפת האתר דף ראשי

«
«
«
«
«
«
«
«
«
«
«
«
«
«

עוד על פקודות  « SSI  « ראשי

מאמר 5: SSI / מאת סלינה סול


5.1 הקדמה

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

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


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

 

5.2 פקודות SSI

כל פקודות SSI הן בפורמט של הערות SGML בתוך מסמך HTML.
הן נראות בערך כך:

          <!--#command tag1="value1" tag2="value2" -->
ישנן כמה פקודות שניתן להשתמש בהן.
נמנה כמה מהן:

5.2.1 פקודת config

פקודה זו מטפלת בכמה אספקטים של ניתוח קובץ. לפקודה מספר תגים תקפים:
1. errmsg - קובע איזו הודעת שגיאה נשלחת חזרה אם התרחשה בעיה בזמן
חלוקת המסמך וניתוחו.
2. timefmt - מגדיר לשרת את הפורמט להצגת תאריכים. הגדרות אלו חופפות לחוקי
הפורמט של UNIX. לכן,<!--#B%d,%Y% ,config timefmt="%A"-->
ייתן פלט כמו: Friday, August 12, 1999.
פורמטים יעילים נוספים כוללים:

%%%
a%קיצור של היום בשבוע.
A%שם מלא ל היום בשבוע.
w%מס' היום בשבוע (כשאר שבת היא יום 0).
b%קיצור של שם החודש.
B%שם מלא של החודש.
d% היום בחודש (31-01).
e% היום בחודש (31-1).
H% השעה ביום (23-00).
I%השעה ביום (12-01).
j%היום בשנה (366-001).
M% הדקה (59-00).
p% AM או PM.
S%השניות (61-00).
y% שתי הספרות האחרונות בשנה (99-00).
Y% השנה (כמו 1999).
Z%אזור הזמן (כמו PST).

3. sizefmt - מגדיר לשרת את הפורמט להצגת גודל קובץ.

5.2.2 פקודת include

פקודה זו מכניסה טקסט של מסמך נפרד למסמך המחולק והמנותח.
לדוגמא, אם ישנו תפריט בכל עמוד, במקום לקודד את אותו קוד HTML בכל דף באתר ניתן לכתוב את הקוד לתפריט בקובץ נפרד ולהשתמש ב - SSI כדי שמסמכים רבים יכירו וישתמשו בו: <!--#include virtual="menu.html" -->.

פקודה זו מקבלת שני תגים תקפים:
1. virtual - מגדיר נתיב וירטואלי למסמך בשרת.
2. file - נותן נתיב יחסית לספריה הנוכחית.

5.2.3 פקודת echo

פקודה זו מדפיסה את הערך של אחד ממשתני הסביבה הבאים:

1. DOCUMENT_NAME - שם הקובץ הנוכחי.
2. DOCUMENT_URI - הנתיב הוירטואלי למסמך.
3. QUERY_STRING_UNESCAPED - הגרסה לכל שאילתת חיפוש ששלח הלקוח, עם כל התווים המיוחדים
השייכים ל-shell , תחומים ב - "/".
4. DATE_LOCAL - התאריך הנוכחי, באזור הזמן הנוכחי.
5. DATE_GMT - התאריך הנוכחי לפי זמן גריניץ'.
6. LAST_MODIFIED - תאריך העדכון האחרון של המסמך הנוכחי.(מוצג לפי timefmt).

התג התקף היחיד לפקודה זו הוא: var שערכו הוא שם המשתנה שיש להדפיס.

5.2.4 פקודת fsize

פקודה זו מדפיסה גודל של קובץ מסוים.

התגים התקפים לפקודה זו זהים לאלה של פקודת ה - include ופורמט התוצאה של הפקודה מוגדר ע"י הפרמטר sizefmt שבפקודת ה - config.

5.2.5 פקודת flastmod

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

התגים התקפים לפקודה זו זהים לאלה שבפקודת ה - config.

5.2.6 פקודת exec

פקודה זו מריצה פקודת מעטפת או CGI script.

התגים התקפים הם:
1. cmd - מריץ את המחרוזת הנתונה באמצעות שימוש ב-shell של מערכת ההפעלה
עליה רץ השרת.
2. cgi - מריץ את ה - CGI script ומוסיף את הפלט.

לדוגמא, כדי להציג את התאריך הנוכחי על דף HTML (אם השרת רץ על UNIX)
יש לכתוב את הקוד הבא:
       <HTML>
          <HEAD>
          <TITLE>Date Test</TITLE>
          </HEAD>
          <BODY>
          The date is:
          <!--#exec cmd = "date" -->
          </BODY>
          </HTML>

המשתמש לא יראה אף פעם את התגים כיוון שהשרת יבצע את העבודה הנדרשת ואת ההחלפה לפני שהדף יצא.