2024-07-27 13:29:26 +08:00
|
|
|
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cloud .
|
2023-07-11 19:47:05 +08:00
|
|
|
|
|
|
|
|
package serverconfigs
|
|
|
|
|
|
|
|
|
|
type HTTPPageOptimizationMimeType = string
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
HTTPPageOptimizationMimeTypeHTML HTTPPageOptimizationMimeType = "text/html"
|
|
|
|
|
HTTPPageOptimizationMimeTypeJavascript HTTPPageOptimizationMimeType = "text/javascript"
|
|
|
|
|
HTTPPageOptimizationMimeTypeCSS HTTPPageOptimizationMimeType = "text/css"
|
|
|
|
|
)
|
|
|
|
|
|
2024-03-14 14:24:22 +08:00
|
|
|
type HTTPPageMinifier interface {
|
|
|
|
|
Bytes(mediaType string, data []byte) ([]byte, error)
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-11 19:47:05 +08:00
|
|
|
type HTTPPageOptimizationConfig struct {
|
|
|
|
|
IsPrior bool `yaml:"isPrior" json:"isPrior"`
|
|
|
|
|
|
|
|
|
|
HTML *HTTPHTMLOptimizationConfig `yaml:"html" json:"html"`
|
|
|
|
|
Javascript *HTTPJavascriptOptimizationConfig `yaml:"javascript" json:"javascript"`
|
|
|
|
|
CSS *HTTPCSSOptimizationConfig `yaml:"css" json:"css"`
|
|
|
|
|
|
2024-03-14 14:24:22 +08:00
|
|
|
isOn bool
|
|
|
|
|
|
|
|
|
|
minifyInstance HTTPPageMinifier
|
2023-07-11 19:47:05 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewHTTPPageOptimizationConfig() *HTTPPageOptimizationConfig {
|
|
|
|
|
return &HTTPPageOptimizationConfig{
|
|
|
|
|
IsPrior: false,
|
|
|
|
|
HTML: NewHTTPHTMLOptimizationConfig(),
|
|
|
|
|
Javascript: NewHTTPJavascriptOptimizationConfig(),
|
|
|
|
|
CSS: NewHTTPCSSOptimizationConfig(),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (this *HTTPPageOptimizationConfig) Init() error {
|
|
|
|
|
this.isOn = this.CheckIsOn()
|
|
|
|
|
|
|
|
|
|
if this.HTML != nil {
|
|
|
|
|
err := this.HTML.Init()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if this.HTML.IsOn {
|
|
|
|
|
this.isOn = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if this.Javascript != nil {
|
|
|
|
|
err := this.Javascript.Init()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if this.Javascript.IsOn {
|
|
|
|
|
this.isOn = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if this.CSS != nil {
|
|
|
|
|
err := this.CSS.Init()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if this.CSS.IsOn {
|
|
|
|
|
this.isOn = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (this *HTTPPageOptimizationConfig) IsOn() bool {
|
|
|
|
|
return this.isOn
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (this *HTTPPageOptimizationConfig) CheckIsOn() bool {
|
|
|
|
|
return (this.HTML != nil && this.HTML.IsOn) ||
|
|
|
|
|
(this.Javascript != nil && this.Javascript.IsOn) ||
|
|
|
|
|
(this.CSS != nil && this.CSS.IsOn)
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-14 14:24:22 +08:00
|
|
|
func (this *HTTPPageOptimizationConfig) InternalInstance() HTTPPageMinifier {
|
|
|
|
|
return this.minifyInstance
|
2023-07-11 19:47:05 +08:00
|
|
|
}
|
|
|
|
|
|
2024-03-14 14:24:22 +08:00
|
|
|
func (this *HTTPPageOptimizationConfig) SetInternalInstance(instance HTTPPageMinifier) {
|
|
|
|
|
this.minifyInstance = instance
|
2023-07-11 19:47:05 +08:00
|
|
|
}
|