บทนี้นำเสนอเกี่ยวกับ 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
}