aspTear

‏ • 31 ביולי, 2004

במאמר הבא אסביר ואדגים את השימוש באובייקט ASPTear של Softwing.
גרסא 1.0 (החינמית) באובייקט משתמשים כדי לקרוא דפים, ASP, HTML או כל דף אחר, מאתר באינטרנט ולהשתמש בקוד המקור (source code) של הדף
לשימוש שלכם, במאמר הזה אני אתמקד ביעול האתר על ידי קריאת קוד המקור של דפי ASP באתר וכתיבתם לדפי HTML, בדרך זו העומס
על השרת יורד בצורה דרסטית, ומהירות הגלישה עולה, אבל עוד על זה בהמשך.
במאמר אני אשתמש באובייקט בצד שרת בשפת VBScript.


הורדת והתקנת האובייקט


את האובייקט(בקובץ זיפ) ניתן להוריד מהכתובת הבאה: http://www.alphasierrapapa.com/IisDev/Downloads/AspTear.zip
את האובייקט צריך גם להתקיןלרשום במערכת, אחרת לא נוכל לקרוא לו בשמו והוא יבוא.
אחרי שהורדנו את הקובץ זיפ ופתחנו אותו לתיקיה ידועה לנו אנחנו מתקינים אותו ע"י פתיחת שורת פקודה(run), ושם כותבים:


regsvr32 c:myFolderasptear.dll

עכשיו אם אין שגיאה סיימנו להתקין והרכיב אמור לעבוד כמו שצריך.


שימוש ב ASPTear


את האובייקט יוצרים בצורה הבאה:











1
2
3
4  








<%
dim aspTear as object
set aspTear = server.CreateObject("Softwing.ASPTear")
%>


הרכיב מקבל 5 נתונים שמכוונים אותו לתוצאה הנכונה, אגב אפשר לשלוח לדף נתונים ב post או get כדי לקבל פלט נכון.


  • כתובת הדף כמובן

  • postget(post=1,get=2)

  • הנתונים שנרצה לשלוח בpost/get , שניהם אגב נכתבים באותה צורה

  • שם משתמש לדף שדורש אחד כזה

  • והסיסמא שהולכת איתו ביחד כמובן

את הנתונים כותבים בצורה הזאת: var1=value1&var2=value2&var3=value3 בדיוק כמו שכתוב ב QueryString, גם אם משתמשים
ב GET וגם אם משתמשים ב POST
עכשיו בעזרת השיטה retrive והנתונים האלה נקבל את קוד המקור של הדף הנחשק.
דוגמא שווה אלף מילים:











1
2
3
4  








<%
dim htmlStr as string
htmlStr = aspTear.retrieve("https://www.webmaster.org.il/forums/forum.asp",2,"ForumId=3&page=2","","")
%>


אז מה עשינו פה?
קראנו לדף https://www.webmaster.org.il/forums/forum.asp
השתמשנו בשיטת GET
שלחנו את הנתונים הבאים ForumId=3 ו page=2
את שם המשתמש והסיסמא השארנו ריקים כי אין בהם צורך..

שימו לב שזהו דף ASP ומה שנקבל זה בדיוק אותו קוד שנראה כאשר נכנס לדף ונעשה view source


יעול מהירות האתר בעזרת ASPTear


אז מה הרעיון?
כל פעם שגולש מבקש דף ASP השרת רץ על הקוד מבצע את הסקריפטים בצד שרת ושולח את הפלט(HTML) למשתמש,
כשגולש מבקש דף HTML השרת שולח אותו מיד בלי לרוץ עליו לפני, פעולה מהירה בהרבה משליחת דף ASP, ולכן נעדיף שהאתר יהיה כולו
ב HTML נקי ככה לא יהיה עומס על השרת והגלישה תהיה מהירה יותר, אבל מצד שני אנחנו לא מתכוונים לכתוב את כל הדפים באתר
כל פעם שישתנה משהו, ולכן נעשה את זה בסקריפט שקורא את הפלט שמציג דף ה ASP וכותב אותו ל HTML, את הפעולה הזאת עושה רק
מנהל האתר כך שזה לא משנה כל כך מה אורך הקוד בדפים, גם אם יקח קצת זמן מנהל האתר יחכה ולא יברח מהאתר, בדרך כלל.
צריך לזכור אבל שיש מקרים בהם אין טעם לכתוב את הדף כ HTML, כמו למשל דפי חיפוש.. ובכלל זה לא נורא אם יהיו כמה דפי ASP באתר
לדעתי כדאי להפוך רק את הדפים הראשיים ל HTML כדי להוריד עומס מהשרת, אם לא יהיה עומס גם דפי ה ASP השוליים באתר יעבדו יותר מהר


אז איך עושים את זה?
לקריאת דפי ה ASP נשתמש כמובן ב ASPTear, ולכתיבת דפי הHTML נשתמש באובייקט FileSystemObject, הרכיב כבר מותקן על השרת
ואני בטוח שלרובכם כבר יצא להשתמש בו, בכל מקרה אני אדגים את השימוש כך שגם לאלה שלא השתמשו בו עדיין לא תהיה בעיה

נבנה את הקוד שלנו בחלקים,קליטת הנתונים, פתיחת האובייקט, והשימוש בו:











1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17  








<%@ language=vbscript codepage=1255 %>
<%
Option Explicit

dim aspTear,htmlStr,pageURL,method,requestStr,userName,userPass,newFileName

pageURL=request("pageURL") ' http://www.mySite.org.il/profile.asp
method=cint(request("method") '1=POST 2=GET
requestStr=request("requestStr") ' brand=star&language=english
userName=request("userName") ' can be empty
userPass=request("userPass") ' this one too
newFileName=request("newFileName") 'e.g. profile.html

set aspTear = Server.CreateObject("Softwing.ASPTear")
htmlStr=aspTear.retrieve(pageURL,method,requestStr,userName,userPass)
set aspTear=nothing
%>


עד כאן ASPTear, השגנו מה שרצינו עכשיו נכתוב הכל לתוך דף HTML.











1
2
3
4
5
6
7
8
9
10
11  








<%
dim fso, myFile
set fso = Server.CreateObject("Scripting.FileSystemObject") ' creat FileSystemObject object…

set myFile = fso.OpenTextFile("d:wwwrootmySite" & newFileName,2,true) ' open text file: file location(can use server.MapPath) & name,for writing,if file doesn't exsist create it
myFile.write htmlStr ' write the source code into the new file

myFile.Close
set myFile=nothing
set fso=nothing
%>


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

זהו, מקווה שעזרתי והייתי ברור

תגיות: , ,

תגובות בפייסבוק