diff --git a/pkg/services/thumbs/service.go b/pkg/services/thumbs/service.go index f3b1e2a84ac..b6b75e8f983 100644 --- a/pkg/services/thumbs/service.go +++ b/pkg/services/thumbs/service.go @@ -227,12 +227,21 @@ func (hs *thumbService) GetImage(c *models.ReqContext) { return } - if err != nil { + if err != nil || res == nil { hs.log.Error("Error when retrieving thumbnail", "dashboardUid", req.UID, "err", err.Error()) c.JSON(500, map[string]string{"dashboardUID": req.UID, "error": "unknown"}) return } + currentEtag := fmt.Sprintf("%d", res.Updated.Unix()) + c.Resp.Header().Set("ETag", currentEtag) + + previousEtag := c.Req.Header.Get("If-None-Match") + if previousEtag == currentEtag { + c.Resp.WriteHeader(http.StatusNotModified) + return + } + c.Resp.Header().Set("Content-Type", res.MimeType) if _, err := c.Resp.Write(res.Image); err != nil { hs.log.Error("Error writing to response", "dashboardUid", req.UID, "err", err)