mirror of
https://github.com/miniflux/v2.git
synced 2025-06-27 16:36:00 +00:00
feat(config)!: remove SERVER_TIMING_HEADER
config option
BREAKING CHANGE: This option is not really useful and it's used only on the unread page.
This commit is contained in:
parent
ef3dbd3707
commit
e0f7e6f2a8
4 changed files with 1 additions and 39 deletions
|
@ -111,7 +111,6 @@ type Options struct {
|
||||||
hsts bool
|
hsts bool
|
||||||
httpService bool
|
httpService bool
|
||||||
schedulerService bool
|
schedulerService bool
|
||||||
serverTimingHeader bool
|
|
||||||
baseURL string
|
baseURL string
|
||||||
rootURL string
|
rootURL string
|
||||||
basePath string
|
basePath string
|
||||||
|
@ -195,7 +194,6 @@ func NewOptions() *Options {
|
||||||
hsts: defaultHSTS,
|
hsts: defaultHSTS,
|
||||||
httpService: defaultHTTPService,
|
httpService: defaultHTTPService,
|
||||||
schedulerService: defaultSchedulerService,
|
schedulerService: defaultSchedulerService,
|
||||||
serverTimingHeader: defaultTiming,
|
|
||||||
baseURL: defaultBaseURL,
|
baseURL: defaultBaseURL,
|
||||||
rootURL: defaultRootURL,
|
rootURL: defaultRootURL,
|
||||||
basePath: defaultBasePath,
|
basePath: defaultBasePath,
|
||||||
|
@ -300,11 +298,6 @@ func (o *Options) MaintenanceMessage() string {
|
||||||
return o.maintenanceMessage
|
return o.maintenanceMessage
|
||||||
}
|
}
|
||||||
|
|
||||||
// HasServerTimingHeader returns true if server-timing headers enabled.
|
|
||||||
func (o *Options) HasServerTimingHeader() bool {
|
|
||||||
return o.serverTimingHeader
|
|
||||||
}
|
|
||||||
|
|
||||||
// BaseURL returns the application base URL with path.
|
// BaseURL returns the application base URL with path.
|
||||||
func (o *Options) BaseURL() string {
|
func (o *Options) BaseURL() string {
|
||||||
return o.baseURL
|
return o.baseURL
|
||||||
|
@ -784,7 +777,6 @@ func (o *Options) SortedOptions(redactSecret bool) []*Option {
|
||||||
"SCHEDULER_ROUND_ROBIN_MIN_INTERVAL": o.schedulerRoundRobinMinInterval,
|
"SCHEDULER_ROUND_ROBIN_MIN_INTERVAL": o.schedulerRoundRobinMinInterval,
|
||||||
"SCHEDULER_ROUND_ROBIN_MAX_INTERVAL": o.schedulerRoundRobinMaxInterval,
|
"SCHEDULER_ROUND_ROBIN_MAX_INTERVAL": o.schedulerRoundRobinMaxInterval,
|
||||||
"SCHEDULER_SERVICE": o.schedulerService,
|
"SCHEDULER_SERVICE": o.schedulerService,
|
||||||
"SERVER_TIMING_HEADER": o.serverTimingHeader,
|
|
||||||
"WATCHDOG": o.watchdog,
|
"WATCHDOG": o.watchdog,
|
||||||
"WORKER_POOL_SIZE": o.workerPoolSize,
|
"WORKER_POOL_SIZE": o.workerPoolSize,
|
||||||
"YOUTUBE_API_KEY": redactSecretValue(o.youTubeApiKey, redactSecret),
|
"YOUTUBE_API_KEY": redactSecretValue(o.youTubeApiKey, redactSecret),
|
||||||
|
|
|
@ -93,8 +93,6 @@ func (p *Parser) parseLines(lines []string) (err error) {
|
||||||
if parsedValue {
|
if parsedValue {
|
||||||
p.opts.logLevel = "debug"
|
p.opts.logLevel = "debug"
|
||||||
}
|
}
|
||||||
case "SERVER_TIMING_HEADER":
|
|
||||||
p.opts.serverTimingHeader = parseBool(value, defaultTiming)
|
|
||||||
case "BASE_URL":
|
case "BASE_URL":
|
||||||
p.opts.baseURL, p.opts.rootURL, p.opts.basePath, err = parseBaseURL(value)
|
p.opts.baseURL, p.opts.rootURL, p.opts.basePath, err = parseBaseURL(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -4,11 +4,8 @@
|
||||||
package ui // import "miniflux.app/v2/internal/ui"
|
package ui // import "miniflux.app/v2/internal/ui"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
|
||||||
|
|
||||||
"miniflux.app/v2/internal/config"
|
|
||||||
"miniflux.app/v2/internal/http/request"
|
"miniflux.app/v2/internal/http/request"
|
||||||
"miniflux.app/v2/internal/http/response/html"
|
"miniflux.app/v2/internal/http/response/html"
|
||||||
"miniflux.app/v2/internal/http/route"
|
"miniflux.app/v2/internal/http/route"
|
||||||
|
@ -18,14 +15,12 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func (h *handler) showUnreadPage(w http.ResponseWriter, r *http.Request) {
|
func (h *handler) showUnreadPage(w http.ResponseWriter, r *http.Request) {
|
||||||
beginPreProcessing := time.Now()
|
|
||||||
user, err := h.store.UserByID(request.UserID(r))
|
user, err := h.store.UserByID(request.UserID(r))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
html.ServerError(w, r, err)
|
html.ServerError(w, r, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
beginSqlCountUnreadEntries := time.Now()
|
|
||||||
offset := request.QueryIntParam(r, "offset", 0)
|
offset := request.QueryIntParam(r, "offset", 0)
|
||||||
builder := h.store.NewEntryQueryBuilder(user.ID)
|
builder := h.store.NewEntryQueryBuilder(user.ID)
|
||||||
builder.WithStatus(model.EntryStatusUnread)
|
builder.WithStatus(model.EntryStatusUnread)
|
||||||
|
@ -35,13 +30,11 @@ func (h *handler) showUnreadPage(w http.ResponseWriter, r *http.Request) {
|
||||||
html.ServerError(w, r, err)
|
html.ServerError(w, r, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
finishSqlCountUnreadEntries := time.Now()
|
|
||||||
|
|
||||||
if offset >= countUnread {
|
if offset >= countUnread {
|
||||||
offset = 0
|
offset = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
beginSqlFetchUnreadEntries := time.Now()
|
|
||||||
builder = h.store.NewEntryQueryBuilder(user.ID)
|
builder = h.store.NewEntryQueryBuilder(user.ID)
|
||||||
builder.WithStatus(model.EntryStatusUnread)
|
builder.WithStatus(model.EntryStatusUnread)
|
||||||
builder.WithSorting(user.EntryOrder, user.EntryDirection)
|
builder.WithSorting(user.EntryOrder, user.EntryDirection)
|
||||||
|
@ -54,7 +47,6 @@ func (h *handler) showUnreadPage(w http.ResponseWriter, r *http.Request) {
|
||||||
html.ServerError(w, r, err)
|
html.ServerError(w, r, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
finishSqlFetchUnreadEntries := time.Now()
|
|
||||||
|
|
||||||
sess := session.New(h.store, request.SessionID(r))
|
sess := session.New(h.store, request.SessionID(r))
|
||||||
view := view.New(h.tpl, r, sess)
|
view := view.New(h.tpl, r, sess)
|
||||||
|
@ -66,20 +58,5 @@ func (h *handler) showUnreadPage(w http.ResponseWriter, r *http.Request) {
|
||||||
view.Set("countErrorFeeds", h.store.CountUserFeedsWithErrors(user.ID))
|
view.Set("countErrorFeeds", h.store.CountUserFeedsWithErrors(user.ID))
|
||||||
view.Set("hasSaveEntry", h.store.HasSaveEntry(user.ID))
|
view.Set("hasSaveEntry", h.store.HasSaveEntry(user.ID))
|
||||||
|
|
||||||
finishPreProcessing := time.Now()
|
html.OK(w, r, view.Render("unread_entries"))
|
||||||
|
|
||||||
beginTemplateRendering := time.Now()
|
|
||||||
render := view.Render("unread_entries")
|
|
||||||
finishTemplateRendering := time.Now()
|
|
||||||
|
|
||||||
if config.Opts.HasServerTimingHeader() {
|
|
||||||
w.Header().Set("Server-Timing", fmt.Sprintf("pre_processing;dur=%d,sql_count_unread_entries;dur=%d,sql_fetch_unread_entries;dur=%d,template_rendering;dur=%d",
|
|
||||||
finishPreProcessing.Sub(beginPreProcessing).Milliseconds(),
|
|
||||||
finishSqlCountUnreadEntries.Sub(beginSqlCountUnreadEntries).Milliseconds(),
|
|
||||||
finishSqlFetchUnreadEntries.Sub(beginSqlFetchUnreadEntries).Milliseconds(),
|
|
||||||
finishTemplateRendering.Sub(beginTemplateRendering).Milliseconds(),
|
|
||||||
))
|
|
||||||
}
|
|
||||||
|
|
||||||
html.OK(w, r, render)
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -539,11 +539,6 @@ Minimum interval in minutes for the round robin scheduler\&.
|
||||||
.br
|
.br
|
||||||
Default is 60 minutes\&.
|
Default is 60 minutes\&.
|
||||||
.TP
|
.TP
|
||||||
.B SERVER_TIMING_HEADER
|
|
||||||
Set the value to 1 to enable server-timing headers\&.
|
|
||||||
.br
|
|
||||||
Disabled by default\&.
|
|
||||||
.TP
|
|
||||||
.B WATCHDOG
|
.B WATCHDOG
|
||||||
Enable or disable Systemd watchdog\&.
|
Enable or disable Systemd watchdog\&.
|
||||||
.br
|
.br
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue