```xml
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-web-staticfiles</artifactId>
</dependency>
```

#### 1、描述

基础扩展插件，为 Solon Web 提供公共的静态文件（或静态资源）服务支持。约定静态文件目录为：

```xml
resources/static/    #为静态文件根目录（v2.2.10 后支持）
```

映射关系，示例：

请求地址 `/logo.jpg` 映射地址为 `resources/static/logo.jpg`


#### 2、配置参考（一般，默认即可不用配置）

```yml
#添加MIME印射（如果有需要？）
solon.mime:
  vue: "text/html"
  map: "application/json"
  log: "text/plain" #这三行只是示例一下!

#是否启用静态文件服务。（可不配，默认为启用）
solon.staticfiles.enable: true
#静态文件的304缓存时长。（可不配，默认为10分钟）
solon.staticfiles.maxAge: 600
``` 

#### 3、服务端压缩输出配置参考（gzip）

v2.5.7 后支持

```yaml
# 设定 http gzip配置
server.http.gzip.enable: false  #是否启用（默认 fasle）
server.http.gzip.minSize: 4096 #最小多少大小才启用（默认 4k）
server.http.gzip.mimeTypes: 'text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml'
```

注意：mimeTypes 默认的常见的类型，如果有需要增量添加（已默认的，不用再加。只需加新的）

#### 4、三种静态目录额外添加方式（一般，默认即可不用配置）


* 配置风格

```yml
#添加静态目录映射。（按需选择）#v1.11.0 后支持
solon.staticfiles.mappings:
  - path: "/img/" #路径，可以是目录或单文件
    repository: "/data/sss/app/" #1.添加本地绝对目录（仓库只能是目录）
  - path: "/"
    repository: "classpath:user" #2.添加资源路径（仓库只能是目录）
```

* 代码风格

下面的代码，与上面配置效果一一对应

```java
public class DemoApp {
    public static void main(String[] args) {
        Solon.start(App.class, args, app -> {
        
            /*提示：path 可以是目录或单文件；repository 只能是目录（表示这个 path 映射到这个 repository 里）*/
            
            //1.添加本地绝对目录（例：/img/logo.jpg 映射地址为：/data/sss/app/img/logo.jpg）
            StaticMappings.add("/img/", new FileStaticRepository("/data/sss/app/"));
            //或
            StaticMappings.add("/img/log.jpg", new FileStaticRepository("/data/sss/app/"));
            
            //2.添加资源路径
            StaticMappings.add("/", new ClassPathStaticRepository("user"));
        });
    }
}
```
