第10章 Iris 框架第10章:Memory Cache 内存缓存机制详解
第10章 Memory Cache
如果应用要求文件物理上和服务器位于同一台机器,而你希望在提供服务前把文件缓存到内存中以获得最佳性能,那么你需要启用 DirOptions.Cache 字段。
DirCacheOptions 接受 DirCacheOptions:
```go type DirCacheOptions struct { // 启用或禁用缓存。 Enable bool // 启用压缩的最小内容大小(字节)。 CompressMinSize int64 // 匹配此模式的文件不压缩。 CompressIgnore *regexp.Regexp // 可与客户端协商的可用编码, // 常见取值:gzip、br。 Encodings []string
// 大于 0 时向 stdout 输出缓存文件的相关信息。 // 设为 1 时仅输出缓存文件总数 // 及压缩后减少的文件大小。 // 设为 2 时会逐个文件输出。 Verbose uint8 } ```
DirCacheOptions 还支持基于可用的压缩方式(!)来缓存文件。也就是说,当客户端请求某个文件的 gzip 版本时,服务器可以直接返回 gzip 数据,而无需实时编码。这能让网站速度提升 50% 以上。这一切由框架自动完成,你只需提供想支持的 Encodings,剩下的工作 Iris 会处理好。
用法:
```go app.HandleDir("/public", iris.Dir("./assets"), iris.DirOptions{ IndexName: "/index.html", Cache: iris.DirCacheOptions{ Enable: true, Encodings: []string{"gzip"}, CompressIgnore: iris.MatchImagesAssets, CompressMinSize: 30 * iris.B, // 30 字节。 }, }) ```
iris.MatchImagesAssets 只是一个正则表达式,用于避免对已压缩的图片(如 .jpg)进行二次压缩。