The middleware has been archived, please use the middleware of elton.
Static serve for elton, it use to serve static file, such as html, image and etc.
package main
import (
"bytes"
"io"
"os"
packr "github.com/gobuffalo/packr/v2"
"github.com/vicanso/elton"
staticServe "github.com/vicanso/elton-static-serve"
)
var (
box = packr.New("asset", "./")
)
type (
staticFile struct {
box *packr.Box
}
)
func (sf *staticFile) Exists(file string) bool {
return sf.box.Has(file)
}
func (sf *staticFile) Get(file string) ([]byte, error) {
return sf.box.Find(file)
}
func (sf *staticFile) Stat(file string) os.FileInfo {
return nil
}
func (sf *staticFile) NewReader(file string) (io.Reader, error) {
buf, err := sf.Get(file)
if err != nil {
return nil, err
}
return bytes.NewReader(buf), nil
}
func main() {
e := elton.New()
sf := &staticFile{
box: box,
}
// static file route
e.GET("/static/*file", staticServe.New(sf, staticServe.Config{
// 客户端缓存一年
MaxAge: 365 * 24 * 3600,
// 缓存服务器缓存一个小时
SMaxAge: 60 * 60,
DenyQueryString: true,
DisableLastModified: true,
}))
err := e.ListenAndServe(":7001")
if err != nil {
panic(err)
}
}
package main
import (
"github.com/vicanso/elton"
staticServe "github.com/vicanso/elton-static-serve"
)
func main() {
e := elton.New()
sf := new(staticServe.FS)
// static file route
e.GET("/*file", staticServe.New(sf, staticServe.Config{
Path: "/tmp",
// 客户端缓存一年
MaxAge: 365 * 24 * 3600,
// 缓存服务器缓存一个小时
SMaxAge: 60 * 60,
DenyQueryString: true,
DisableLastModified: true,
// packr不支持Stat,因此需要用强ETag
EnableStrongETag: true,
}))
err := e.ListenAndServe(":3000")
if err != nil {
panic(err)
}
}