mirror of
https://github.com/lordmathis/lemma.git
synced 2025-11-05 15:44:21 +00:00
Add Vary header
This commit is contained in:
@@ -108,6 +108,7 @@ func (h *StaticHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
if _, err := os.Stat(brPath); err == nil {
|
if _, err := os.Stat(brPath); err == nil {
|
||||||
w.Header().Set("Content-Encoding", "br")
|
w.Header().Set("Content-Encoding", "br")
|
||||||
w.Header().Set("Content-Type", getContentType(cleanPath))
|
w.Header().Set("Content-Type", getContentType(cleanPath))
|
||||||
|
w.Header().Set("Vary", "Accept-Encoding")
|
||||||
http.ServeFile(w, r, brPath)
|
http.ServeFile(w, r, brPath)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -119,6 +120,7 @@ func (h *StaticHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
if _, err := os.Stat(gzPath); err == nil {
|
if _, err := os.Stat(gzPath); err == nil {
|
||||||
w.Header().Set("Content-Encoding", "gzip")
|
w.Header().Set("Content-Encoding", "gzip")
|
||||||
w.Header().Set("Content-Type", getContentType(cleanPath))
|
w.Header().Set("Content-Type", getContentType(cleanPath))
|
||||||
|
w.Header().Set("Vary", "Accept-Encoding")
|
||||||
http.ServeFile(w, r, gzPath)
|
http.ServeFile(w, r, gzPath)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ func TestStaticHandler_Integration(t *testing.T) {
|
|||||||
wantType string
|
wantType string
|
||||||
wantEncoding string
|
wantEncoding string
|
||||||
wantCacheHeader string
|
wantCacheHeader string
|
||||||
|
wantVary string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "serve index.html",
|
name: "serve index.html",
|
||||||
@@ -73,6 +74,7 @@ func TestStaticHandler_Integration(t *testing.T) {
|
|||||||
wantType: "text/css",
|
wantType: "text/css",
|
||||||
wantEncoding: "gzip",
|
wantEncoding: "gzip",
|
||||||
wantCacheHeader: "public, max-age=31536000",
|
wantCacheHeader: "public, max-age=31536000",
|
||||||
|
wantVary: "Accept-Encoding",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "serve JS with gzip support",
|
name: "serve JS with gzip support",
|
||||||
@@ -83,6 +85,7 @@ func TestStaticHandler_Integration(t *testing.T) {
|
|||||||
wantType: "application/javascript",
|
wantType: "application/javascript",
|
||||||
wantEncoding: "gzip",
|
wantEncoding: "gzip",
|
||||||
wantCacheHeader: "public, max-age=31536000",
|
wantCacheHeader: "public, max-age=31536000",
|
||||||
|
wantVary: "Accept-Encoding",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "serve CSS without gzip",
|
name: "serve CSS without gzip",
|
||||||
@@ -127,6 +130,7 @@ func TestStaticHandler_Integration(t *testing.T) {
|
|||||||
wantType: "text/css",
|
wantType: "text/css",
|
||||||
wantEncoding: "br",
|
wantEncoding: "br",
|
||||||
wantCacheHeader: "public, max-age=31536000",
|
wantCacheHeader: "public, max-age=31536000",
|
||||||
|
wantVary: "Accept-Encoding",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "serve JS with brotli support",
|
name: "serve JS with brotli support",
|
||||||
@@ -137,6 +141,7 @@ func TestStaticHandler_Integration(t *testing.T) {
|
|||||||
wantType: "application/javascript",
|
wantType: "application/javascript",
|
||||||
wantEncoding: "br",
|
wantEncoding: "br",
|
||||||
wantCacheHeader: "public, max-age=31536000",
|
wantCacheHeader: "public, max-age=31536000",
|
||||||
|
wantVary: "Accept-Encoding",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "prefer brotli over gzip when both supported",
|
name: "prefer brotli over gzip when both supported",
|
||||||
@@ -147,6 +152,7 @@ func TestStaticHandler_Integration(t *testing.T) {
|
|||||||
wantType: "application/javascript",
|
wantType: "application/javascript",
|
||||||
wantEncoding: "br",
|
wantEncoding: "br",
|
||||||
wantCacheHeader: "public, max-age=31536000",
|
wantCacheHeader: "public, max-age=31536000",
|
||||||
|
wantVary: "Accept-Encoding",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "fallback to gzip when brotli not available",
|
name: "fallback to gzip when brotli not available",
|
||||||
@@ -157,6 +163,7 @@ func TestStaticHandler_Integration(t *testing.T) {
|
|||||||
wantType: "application/javascript",
|
wantType: "application/javascript",
|
||||||
wantEncoding: "br",
|
wantEncoding: "br",
|
||||||
wantCacheHeader: "public, max-age=31536000",
|
wantCacheHeader: "public, max-age=31536000",
|
||||||
|
wantVary: "Accept-Encoding",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,6 +190,10 @@ func TestStaticHandler_Integration(t *testing.T) {
|
|||||||
if tc.wantCacheHeader != "" {
|
if tc.wantCacheHeader != "" {
|
||||||
assert.Equal(t, tc.wantCacheHeader, w.Header().Get("Cache-Control"))
|
assert.Equal(t, tc.wantCacheHeader, w.Header().Get("Cache-Control"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if tc.wantVary != "" {
|
||||||
|
assert.Equal(t, tc.wantVary, w.Header().Get("Vary"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user