این فصل از چارچوب Go Iris را معرفی کرده و نحوهٔ رسیدگی به فایل‌های استاتیک را آموزش می‌دهد. بعضی اوقات در یک پروژه، برخی از فایل‌های استاتیک وجود دارند که باید برای دسترسی کاربران به صورت مستقیم قرار داده شوند. چگونه می‌توان این کار را انجام داد؟

Iris فایل‌های استاتیک را فاش می‌کند

func main() {
    app := iris.New()
	// تنظیم آیکون صفحه
    app.Favicon("./resources/favicon.ico")
	// تنظیم مسیر برای فایل‌های استاتیک و بایند کردن مسیر URL
    app.HandleDir("/assets", iris.Dir("./assets"))

    app.Listen(":8080")
}

متد HandleDir پارامتر سومی اختیاری به نام DirOptions را قبول می‌کند:

type DirOptions struct {
    // به صورت پیش‌فرض "/index.html" است. اگر مسیر درخواست پایان با **/*/$IndexName پایان یابد، به **/*(/) هدایت می‌شود،
    // که به یک دستگیرنده دیگری که به صورت خودکار توسط چارچوب ثبت شده به عنوان دستگیرنده اصلی ارسال سرویس دهی می‌شود.
    // اگر توسعه‌دهنده آن را به صورت دستی رسیدگی نکرده باشد.
    IndexName string
    // مقادیر مپ PushTargets را (نام فایل به تصویر کشیده شده) برای سرویس دهی بدون درخواست‌های مشتری اضافی (HTTP/2 Push) زمانی که مسیر درخواستی خاص (کلید مپ بدون پیشوند)
    // مسیر درخواست شده (کلید مپ بدون پیشوند) یک دایرکتوری نیست (IndexFile) یا زمانی که باید.
// PushTargetsRegexp شبیه `PushTargets` است اما یک عبارت منظم را قبول می‌کند که با همهٔ فایل‌های زیر دایرکتوری (بازگشتی) مقایسه خواهد شد.
// باید `IndexName` تنظیم شود.//
// مثال
// "/": regexp.MustCompile("((.*).js|(.*).css|(.*).ico)$")
// ببینید نیز `iris.MatchCommonAssets`. 
PushTargetsRegexp map[string]*regexp.Regexp

// فعال‌سازی کش در حافظه و فایل‌های پیش‌فشرده.
Cache DirCacheOptions
// زمانی که فایل‌ها باید به حالت فشرده سرویس داده شوند.
Compress bool

// فهرست فایل‌ها را در دایرکتوری درخواست کنونی نمایش دهد در صورتی که `IndexName` یافت نشود.
ShowList bool
// اگر `ShowList` راست است، آنگاه این تابع برای نمایش لیست فایل در دایرکتوری درخواست شده (dir)
// به جای تابع پیش‌فرض استفاده خواهد شد. 
DirList DirListFunc

// دانلود و ذخیره فایل به صورت محلی. 
Attachments Attachments

// بررسی‌گر اختیاری برای استفاده از آن برای حلقه از منابع درخواستی هر بار. 
AssetValidator func(ctx *context.Context, name string) bool
}