mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
app/{vmselect,vlselect}: enable caching of static contents from /vmui/static/ folder at client side
This should improve repated VMUI page load times on slow networks See https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl/
This commit is contained in:
parent
8c4ce186d3
commit
31f7ef0811
3 changed files with 25 additions and 20 deletions
|
@ -88,6 +88,12 @@ func RequestHandler(w http.ResponseWriter, r *http.Request) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if strings.HasPrefix(path, "/vmui/") {
|
if strings.HasPrefix(path, "/vmui/") {
|
||||||
|
if strings.HasPrefix(path, "/vmui/static/") {
|
||||||
|
// Allow clients caching static contents for long period of time, since it shouldn't change over time.
|
||||||
|
// Path to static contents (such as js and css) must be changed whenever its contents is changed.
|
||||||
|
// See https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl/
|
||||||
|
w.Header().Set("Cache-Control", "max-age=31536000")
|
||||||
|
}
|
||||||
r.URL.Path = path
|
r.URL.Path = path
|
||||||
vmuiFileServer.ServeHTTP(w, r)
|
vmuiFileServer.ServeHTTP(w, r)
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -172,8 +172,7 @@ func RequestHandler(w http.ResponseWriter, r *http.Request) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// vmui access.
|
// vmui access.
|
||||||
switch {
|
if path == "/vmui" || path == "/graph" {
|
||||||
case path == "/vmui" || path == "/graph":
|
|
||||||
// VMUI access via incomplete url without `/` in the end. Redirect to complete url.
|
// VMUI access via incomplete url without `/` in the end. Redirect to complete url.
|
||||||
// Use relative redirect, since the hostname and path prefix may be incorrect if VictoriaMetrics
|
// Use relative redirect, since the hostname and path prefix may be incorrect if VictoriaMetrics
|
||||||
// is hidden behind vmauth or similar proxy.
|
// is hidden behind vmauth or similar proxy.
|
||||||
|
@ -182,7 +181,11 @@ func RequestHandler(w http.ResponseWriter, r *http.Request) bool {
|
||||||
newURL := path + "/?" + r.Form.Encode()
|
newURL := path + "/?" + r.Form.Encode()
|
||||||
httpserver.Redirect(w, newURL)
|
httpserver.Redirect(w, newURL)
|
||||||
return true
|
return true
|
||||||
case strings.HasPrefix(path, "/vmui/"):
|
}
|
||||||
|
if strings.HasPrefix(path, "/graph/") {
|
||||||
|
// This is needed for serving /graph URLs from Prometheus datasource in Grafana.
|
||||||
|
path = strings.Replace(path, "/graph/", "/vmui/", 1)
|
||||||
|
}
|
||||||
if path == "/vmui/custom-dashboards" {
|
if path == "/vmui/custom-dashboards" {
|
||||||
if err := handleVMUICustomDashboards(w); err != nil {
|
if err := handleVMUICustomDashboards(w); err != nil {
|
||||||
httpserver.Errorf(w, r, "%s", err)
|
httpserver.Errorf(w, r, "%s", err)
|
||||||
|
@ -190,21 +193,16 @@ func RequestHandler(w http.ResponseWriter, r *http.Request) bool {
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
if strings.HasPrefix(path, "/vmui/") {
|
||||||
|
if strings.HasPrefix(path, "/vmui/static/") {
|
||||||
|
// Allow clients caching static contents for long period of time, since it shouldn't change over time.
|
||||||
|
// Path to static contents (such as js and css) must be changed whenever its contents is changed.
|
||||||
|
// See https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl/
|
||||||
|
w.Header().Set("Cache-Control", "max-age=31536000")
|
||||||
|
}
|
||||||
r.URL.Path = path
|
r.URL.Path = path
|
||||||
vmuiFileServer.ServeHTTP(w, r)
|
vmuiFileServer.ServeHTTP(w, r)
|
||||||
return true
|
return true
|
||||||
case strings.HasPrefix(path, "/graph/"):
|
|
||||||
// This is needed for serving /graph URLs from Prometheus datasource in Grafana.
|
|
||||||
if path == "/graph/custom-dashboards" {
|
|
||||||
if err := handleVMUICustomDashboards(w); err != nil {
|
|
||||||
httpserver.Errorf(w, r, "%s", err)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
r.URL.Path = strings.Replace(path, "/graph/", "/vmui/", 1)
|
|
||||||
vmuiFileServer.ServeHTTP(w, r)
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(path, "/api/v1/label/") {
|
if strings.HasPrefix(path, "/api/v1/label/") {
|
||||||
|
|
|
@ -39,6 +39,7 @@ The sandbox cluster installation is running under the constant load generated by
|
||||||
* FEATURE: [Alerting rules for VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/deployment/docker#alerts): account for `vmauth` component for alerts `ServiceDown` and `TooManyRestarts`.
|
* FEATURE: [Alerting rules for VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/deployment/docker#alerts): account for `vmauth` component for alerts `ServiceDown` and `TooManyRestarts`.
|
||||||
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): add support for functions, labels, values in autocomplete. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3006).
|
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): add support for functions, labels, values in autocomplete. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3006).
|
||||||
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): retain specified time interval when executing a query from `Top Queries`. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5097).
|
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): retain specified time interval when executing a query from `Top Queries`. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5097).
|
||||||
|
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): improve repeated VMUI page load times by enabling caching of static js and css at web browser side according to [these recommendations](https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl/).
|
||||||
|
|
||||||
* BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert.html): strip sensitive information such as auth headers or passwords from datasource, remote-read, remote-write or notifier URLs in log messages or UI. This behavior is by default and is controlled via `-datasource.showURL`, `-remoteRead.showURL`, `remoteWrite.showURL` or `-notifier.showURL` cmd-line flags. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5044).
|
* BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert.html): strip sensitive information such as auth headers or passwords from datasource, remote-read, remote-write or notifier URLs in log messages or UI. This behavior is by default and is controlled via `-datasource.showURL`, `-remoteRead.showURL`, `remoteWrite.showURL` or `-notifier.showURL` cmd-line flags. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5044).
|
||||||
* BUGFIX: [vmselect](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html): improve performance and memory usage during query processing on machines with big number of CPU cores. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5087) for details.
|
* BUGFIX: [vmselect](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html): improve performance and memory usage during query processing on machines with big number of CPU cores. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5087) for details.
|
||||||
|
|
Loading…
Reference in a new issue