ช่วงนี้เว็บไซต์ของเพื่อนจำเป็นต้องสร้างเว็บไซต์แบบคงที่ แต่บางครั้งอาจมีปัญหาในการสร้างเว็บไซต์แบบคงที่ เราได้รวบรวมวิธีการบางอย่างและคุณสามารถเลือกได้ตามความต้องการของเว็บไซต์ของคุณ 1. สองวิธีง่ายๆ สำหรับการสร้างโฮมเพจแบบคงที่ใน ASP
ทำไมต้องสร้างโฮมเพจแบบคงที่?
1. หากหน้าแรกของคุณอ่านฐานข้อมูลเป็นจำนวนมาก ความเร็วจะช้ามากและกินทรัพยากรเซิร์ฟเวอร์จำนวนมาก แน่นอนว่าการใช้ความเร็วในการเข้าถึงเพจแบบคงที่นั้นเร็วกว่ามาก
2. ค้นหาได้ง่ายจากเครื่องมือค้นหา
3. หากโปรแกรมมีปัญหาสามารถเข้าหน้าแรกได้
4. ยังมีอีกเยอะ คิดเอาเอง :)
วิธีการสมัคร:
หากหน้าแรกของคุณคือ index.asp คุณสามารถสร้าง index.htm ได้ (ลำดับการเข้าถึงเริ่มต้นต้องเป็น index.htm, index.asp) ด้วยวิธีนี้ เมื่อผู้เยี่ยมชมเยี่ยมชมเว็บไซต์ของคุณเป็นครั้งแรก เขาจะเปิดขึ้นมา index.htm คุณสามารถสร้างลิงก์บนหน้าแรกของเว็บไซต์เป็น index.asp เพื่อว่าเมื่อคุณคลิกลิงก์บนหน้าแรกจากหน้าใดก็ได้ของเว็บไซต์ index.asp จะปรากฏขึ้น ซึ่งจะทำให้แน่ใจได้ถึงความทันเวลาของการอัปเดตข้อมูล (หลังจากนั้น จำเป็นต้องอัปเดต index.htm ด้วยตนเองทุกครั้ง)
วิธีที่หนึ่ง:
รวมไฟล์โฮมเพจในกล่องข้อความแบบฟอร์มโดยตรง ส่งโค้ดโฮมเพจเป็นข้อมูล จากนั้นสร้างเพจแบบคงที่
รหัสมีดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
-
'------------------------------------------------ - ---------
'ใช้การส่งแบบฟอร์มเพื่อสร้างโค้ดสำหรับโฮมเพจแบบคงที่
'ตรวจสอบให้แน่ใจว่าพื้นที่ของคุณรองรับ FSO และมีเนื้อหาโค้ดน้อยลงในหน้าแรก
'------------------------------------------------ - ---------
เนื้อหาสลัว
content=Trim(Request.Form(เนื้อหา))
ถ้าเนื้อหา<>แล้ว
โทร makeindex()
สิ้นสุดถ้า
makeindex ย่อย ()
ตั้งค่า Fso = Server.CreateObject (Scripting.FileSystemObject)
Filen=Server.MapPath(index.htm)
ตั้งค่า Site_Config=FSO.CreateTextFile (Filen, true, False)
Site_Config.เขียนเนื้อหา
Site_Config ปิด
ตั้งค่า Fso = ไม่มีเลย
Response.Write(<script>alert('สร้างโฮมเพจสำเร็จแล้ว!')</script>)
จบย่อย
-
<ชื่อแบบฟอร์ม=form1วิธีการ=การกระทำที่โพสต์=>
<ชื่อ textarea=เนื้อหา>
<!-- #i รวม file=index.asp -->
</ข้อความ>
<br>
<ประเภทอินพุต=ชื่อส่ง=ค่าส่ง=ส่ง>
</แบบฟอร์ม>
ข้อบกพร่อง:
1. หากหน้าแรกมีแท็ก <@ ..> ระบบจะแจ้งข้อผิดพลาด
2. หากรหัสหน้าแรกยาวเกินไป จะไม่สามารถส่งโดยใช้แบบฟอร์มได้ (มีข้อจำกัดบางประการเกี่ยวกับความยาวของข้อมูลในแบบฟอร์ม)
สารละลาย:
1. ลบแท็ก <@ > ใน index.asp
2. ใช้ eWebEditor เพื่อส่งและสนับสนุนข้อมูลขนาดใหญ่ (สามารถแบ่งส่วนได้โดยอัตโนมัติ)
ข้อได้เปรียบ:
เนื้อหาสามารถแก้ไขได้แบบเรียลไทม์ในขณะที่สร้างขึ้น
วิธีที่สอง:
ใช้ XMLHTTP โดยตรงเพื่อรับรหัสของ index.asp
คัดลอกรหัสรหัสดังต่อไปนี้:
-
'------------------------------------------------ - ---------
'ใช้ XMLHTTP เพื่อสร้างโค้ดโฮมเพจแบบคงที่
'Curl คือที่อยู่หน้าแรกของคุณ ตรวจสอบให้แน่ใจว่าพื้นที่ของคุณรองรับ FSO
'------------------------------------------------ - ---------
อ่านสลัว, Curl, เนื้อหา
Curl=http://www.xx0123.com/index.asp
อ่าน = getHTTPage (Curl)
ถ้าอ่าน<>แล้ว
เนื้อหา=อ่าน
โทร makeindex()
สิ้นสุดถ้า
makeindex ย่อย ()
ตั้งค่า Fso = Server.CreateObject (Scripting.FileSystemObject)
Filen=Server.MapPath(index.htm)
ตั้งค่า Site_Config=FSO.CreateTextFile (Filen, true, False)
Site_Config.เขียนเนื้อหา
Site_Config ปิด
ตั้งค่า Fso = ไม่มีเลย
Response.Write(<script>alert('สร้างโฮมเพจสำเร็จแล้ว!')</script>)
จบย่อย
ฟังก์ชั่น getHTTPPage(url)
http สลัว
ตั้งค่า http=Server.createobject(Microsoft.XMLHTTP)
Http.open GET, url, false
Http.ส่ง()
ถ้า Http.readystate<>4 แล้ว
ฟังก์ชั่นทางออก
สิ้นสุดถ้า
getHTTPPage=bytesToBSTR(Http.responseBody,GB2312)
ตั้งค่า http=nothing
ถ้า err.number<>0 แล้ว err.Clear
สิ้นสุดฟังก์ชัน
ฟังก์ชั่น BytesToBstr (เนื้อหา, Cset)
objstream สลัว
ตั้ง objstream = Server.CreateObject (adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.เปิด
objstream เขียนเนื้อหา
objstream ตำแหน่ง = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.ปิด
ตั้ง objstream = ไม่มีเลย
ฟังก์ชันสิ้นสุด
-
2. การแยกเทมเพลตและการสร้างแบทช์
เนื้อหาที่จะแทนที่ในไฟล์เทมเพลตนั้นอยู่ใน {...}
เพื่อที่จะมุ่งมั่นเพื่อความเรียบง่าย โค้ดการจัดการข้อผิดพลาดจึงถูกลบออก (พารามิเตอร์สตริงที่จะแทนที่ในการแทนที่ไม่สามารถเป็นค่าว่างได้ และแน่นอนว่า fso ควรทำการตรวจสอบข้อผิดพลาดด้วย)
คัดลอกรหัสรหัสดังต่อไปนี้:
-
'------------------------------------------------ - ------------------------------------------------- - -----------------
ที่มา: kevin fung http://www.yaotong.cn
' ผู้แต่ง: kevin fung Laggard ID: kevin2008 โปรดคงไว้เหมือนตอนพิมพ์ซ้ำ
' เวลา: 2006/07/05 Laggard Forum เปิดตัวครั้งแรก
'------------------------------------------------ - ------------------------------------------------- - ------------------
Dim start 'ตัวแปรนี้คือตำแหน่งชุดบันทึกที่ตัวชี้จะชี้ไป โดยรับแบบไดนามิกผ่านพารามิเตอร์
Dim Template 'ไฟล์เทมเพลตจะอ่านตัวแปรนี้เป็นสตริง
เนื้อหาสลัว 'ตัวแปรสตริงที่ถูกแทนที่
Dim objConn 'วัตถุการเชื่อมต่อ
Dim ConnStr 'สตริงการเชื่อมต่อ
คำสั่งสืบค้น Dim sql '
Dim cnt:cnt = 1 'เริ่มต้นตัวนับลูปของรอบนี้
start = request(start) 'รับตำแหน่งเริ่มต้นของตัวชี้แบบกลมปัจจุบัน
ถ้า IsNumeric(start) จากนั้น start = CLng(start) มิฉะนั้น start=1
ถ้า start=0 แล้ว start = 1 'ถ้า start
ConnStr = ผู้ให้บริการ = Microsoft.Jet.OLEDB.4.0; แหล่งข้อมูล = & Server.MapPath (DataBase.mdb)
sql = เลือก * จาก table_name
ตั้งค่า objConn = Server.CreateObject (ADODB.Connection)
objConn เปิด ConnStr
ชุด rs = Server.CreateObject (ADODB.Recordset)
rs.open sql,objConn,1,1 'เปิดชุดข้อมูล'
rs.AbsolutePosition = start 'ขั้นตอนที่สำคัญที่สุดคือการชี้ตัวชี้เพื่อเริ่มต้น ซึ่งจะได้รับแบบไดนามิกผ่านพารามิเตอร์
Template = getTemplate(Server.MapPath(template.html))' template.html เป็นไฟล์เทมเพลต และสตริงจะถูกอ่านผ่านฟังก์ชัน getTemplate เนื้อหาที่จะแทนที่ในไฟล์เทมเพลตจะอยู่ใน {...}
ในขณะที่ Not rs.eof And cnt<= 500 '500 คือการกำหนดจำนวนรอบสำหรับคำขอเพื่อสร้างเพจ ให้แก้ไขตามสถานการณ์จริง หากค่าดังกล่าวสูงเกินไป ข้อผิดพลาดการหมดเวลาจะเกิดขึ้นเมื่อมีจำนวนมาก ชุดบันทึก
content = แทนที่ (เทมเพลต, {filed_name_1}, rs (filed_name_1)) 'แทนที่เนื้อหาเทมเพลตด้วยค่าฟิลด์
เนื้อหา = แทนที่ (เนื้อหา, {filed_name_2}, rs (filed_name_2))
-
เนื้อหา = แทนที่ (เนื้อหา, {filed_name_n}, rs (filed_name_n))
genHtml content,Server.MapPath(htmfiles/&rs(id)&.html) 'สร้างเอกสาร HTML โดยการแทนที่สตริงเทมเพลต htmfiles คือไดเร็กทอรีที่เก็บไฟล์คงที่ โปรดสร้างด้วยตนเอง
cnt = cnt + 1 'ตัวนับบวก 1
start = start + 1 'การเพิ่มตัวแปรตัวชี้
rs.movenext
เวน
ถ้าไม่ใช่ rs.eof ให้ 'ส่งคำขอรอบถัดไปโดยการรีเฟรชและส่งตัวแปรพอยน์เตอร์ไปเริ่มรอบถัดไป
response.write <meta http-equiv='refresh' content='0;URL=?start=&start&'>
อื่น
การสร้างไฟล์ HTML response.write เสร็จสมบูรณ์!
จบถ้า
rs.ปิด()
Setrs=ไม่มีอะไร
objConn.ปิด()
ตั้งค่า objConn = ไม่มีเลย
ฟังก์ชัน getTemplate(template)' เพื่ออ่านเทมเพลต ส่งกลับสตริง เทมเพลตคือชื่อไฟล์
สลัว fso,f
ตั้งค่า fso = CreateObject (Scripting.FileSystemObject)
ชุด f = fso.OpenTextFile (เทมเพลต)
getTemplate=f.อ่านทั้งหมด
ฉ.ปิด
ตั้งค่า f=ไม่มีอะไร
ตั้งค่า fso=ไม่มีอะไร
ฟังก์ชันสิ้นสุด
Sub genHtml(content,filename)' เขียนเนื้อหาที่ถูกแทนที่ลงในเอกสาร HTML เนื้อหาคือสตริงที่ถูกแทนที่ และชื่อไฟล์คือชื่อไฟล์ที่สร้างขึ้น
สลัว fso,f
ตั้งค่า fso = Server.CreateObject (Scripting.FileSystemObject)
Set f = fso.CreateTextFile(filename,true)'หากชื่อไฟล์ซ้ำ ไฟล์เก่าจะถูกเขียนทับ
ฉ.เขียนเนื้อหา
ฉ.ปิด
เซต f = ไม่มีเลย
ตั้งค่า fso=ไม่มีอะไร
จบหมวดย่อย
-