บทนี้นำเสนอเกี่ยวกับ Go Iris framework และวิธีการจัดการไฟล์แบบสถิต บางครั้งในโปรเจคที่มีไฟล์แบบสถิตบางไฟล์ที่ต้องการให้ผู้ใช้เข้าถึงโดยตรง วิธีการตั้งค่านี้ควรจัดเตรียมอย่างไร?
Iris Exposes Static Files
func main() {
app := iris.New()
// ตั้งค่าไอคอนหน้าเพจ
app.Favicon("./resources/favicon.ico")
// ตั้งเส้นทางสำหรับไฟล์แบบสถิต และผูก URL route
app.HandleDir("/assets", iris.Dir("./assets"))
app.Listen(":8080")
}
เมธอด HandleDir ยอมรับพารามิเตอร์ทางสามเพิ่มเติม DirOptions:
type DirOptions struct {
// ค่าเริ่มต้นคือ "/index.html" ถ้าเส้นทางคำขอลงท้ายด้วย **/*/$IndexName จะเปลี่ยนเส้นทางไปที่ **/*(/) ซึ่งนำไปสู่ handler อื่นที่ได้รับการลงทะเบียนโดยโมดูลอัตโนมัติในกรณีที่ผู้พัฒนาปล่อยมันเอง.
// หากผู้พัฒนาไม่ได้จัดการด้วยตนเอง.
IndexName string
// PushTargets ชื่อไฟล์ (ค่าที่ถูกแมป) เพื่อให้บริการโดยไม่ต้องขอข้อมูลเพิ่มเติมจาก client (HTTP/2 Push) เมื่อเส้นทางคำขอพิเศษถูกขอ (ส่วนหลังของแผนที่โดยไม่มีคำขอเพิ่ม)
// เส้นทางคำขอ (ส่วนหลังขอๅโดยไม่มีคำขอเพิ่ม) ไม่ใช่ไดเรกทอรี (เป็น `IndexFile`) หรือเมื่อ
// PushTargetsRegexp เหมือนกับ `PushTargets` แต่มันยอมรับ regexp ที่จะเปรียบเทียบกับไฟล์ทั้งหมดที่อยู่ภายใต้ไดเรกทอรี (โดยเรียกใช้เป็นลำดับก่อน) ดฬ `IndexName` ควรถูกตั้งค่า.
// ตัวอย่าง
// "/": regexp.MustCompile("((.*).js|(.*).css|(.*).ico)$")
// ดูเพิ่มเติมที่ `iris.MatchCommonAssets`.
PushTargetsRegexp map[string]*regexp.Regexp
// Caching เพื่อเปิดใช้งานหน่วยความจำในเมมโมรี่และไฟล์ที่ถูกบีบอัดก่อน
Cache DirCacheOptions
// เมื่อไฟล์ควรได้การบริการในสถานะที่ถูกบีบอัด
Compress bool
// รายชื่อไฟล์ในไดเรกทอรีคำขอปัจจุบันถ้า `IndexName` ไม่พบ.
ShowList bool
// หาก `ShowList` เป็นจริง ในกรณีนี้ฟังก์ชันนี้จะถูกใช้เพื่อแสดงรายการไฟล์ของไดเร็กทอรีที่ขอ (dir)
// แทนที่รายการค่าเริ่มต้น.
DirList DirListFunc
// ดาวน์โหลดและบันทึกไปยังไฟล์ในเครื่องท้องถิ่น.
Attachments Attachments
// ตรวจสอบถึงกำลังที่จะถูกใช้ทุกครั้งในคำขอทรัสซอร์สน์.
AssetValidator func(ctx *context.Context, name string) bool
}