Просмотр исходного кода

Avoid browser caching issues when assets changes

Frédéric Guillot 7 лет назад
Родитель
Сommit
cfc1f3eb69
3 измененных файлов с 13 добавлено и 8 удалено
  1. 4 4
      template/common.go
  2. 3 3
      template/html/common/layout.html
  3. 6 1
      ui/view/view.go

+ 4 - 4
template/common.go

@@ -107,10 +107,10 @@ var templateCommonMap = map[string]string{
     {{ end }}
 
     <meta name="theme-color" content="{{ theme_color .theme }}">
-    <link rel="stylesheet" type="text/css" href="{{ route "stylesheet" "name" .theme }}">
+    <link rel="stylesheet" type="text/css" href="{{ route "stylesheet" "name" .theme }}?{{ .theme_checksum }}">
 
-    <script type="text/javascript" src="{{ route "javascript" "name" "app" }}" defer></script>
-    <script type="text/javascript" src="{{ route "javascript" "name" "sw" }}" defer id="service-worker-script"></script>
+    <script type="text/javascript" src="{{ route "javascript" "name" "app" }}?{{ .app_js_checksum }}" defer></script>
+    <script type="text/javascript" src="{{ route "javascript" "name" "sw" }}?{{ .sw_js_checksum }}" defer id="service-worker-script"></script>
 </head>
 <body data-entries-status-url="{{ route "updateEntriesStatus" }}">
     {{ if .user }}
@@ -239,6 +239,6 @@ var templateCommonMap = map[string]string{
 var templateCommonMapChecksums = map[string]string{
 	"entry_pagination": "756ef122f3ebc73754b5fc4304bf05e59da0ab4af030b2509ff4c9b4a74096ce",
 	"item_meta":        "2da78476f6c7fb8742c969ad1bfc20b7b61fddf97d79a77baf3cabda52f6fb49",
-	"layout":           "16658c13e91cab88ba4c49f14654a95b1db12054cc96def3e40360a52acc6c54",
+	"layout":           "952632cafa23e02e3ae74c33a6606e127ab7bff0b82a2aa848967da8966475a5",
 	"pagination":       "b592d58ea9d6abf2dc0b158621404cbfaeea5413b1c8b8b9818725963096b196",
 }

+ 3 - 3
template/html/common/layout.html

@@ -33,10 +33,10 @@
     {{ end }}
 
     <meta name="theme-color" content="{{ theme_color .theme }}">
-    <link rel="stylesheet" type="text/css" href="{{ route "stylesheet" "name" .theme }}">
+    <link rel="stylesheet" type="text/css" href="{{ route "stylesheet" "name" .theme }}?{{ .theme_checksum }}">
 
-    <script type="text/javascript" src="{{ route "javascript" "name" "app" }}" defer></script>
-    <script type="text/javascript" src="{{ route "javascript" "name" "sw" }}" defer id="service-worker-script"></script>
+    <script type="text/javascript" src="{{ route "javascript" "name" "app" }}?{{ .app_js_checksum }}" defer></script>
+    <script type="text/javascript" src="{{ route "javascript" "name" "sw" }}?{{ .sw_js_checksum }}" defer id="service-worker-script"></script>
 </head>
 <body data-entries-status-url="{{ route "updateEntriesStatus" }}">
     {{ if .user }}

+ 6 - 1
ui/view/view.go

@@ -8,6 +8,7 @@ import (
 	"github.com/miniflux/miniflux/http/context"
 	"github.com/miniflux/miniflux/template"
 	"github.com/miniflux/miniflux/ui/session"
+	"github.com/miniflux/miniflux/ui/static"
 )
 
 // View wraps template argument building.
@@ -31,10 +32,14 @@ func (v *View) Render(template string) []byte {
 // New returns a new view with default parameters.
 func New(tpl *template.Engine, ctx *context.Context, sess *session.Session) *View {
 	b := &View{tpl, ctx, make(map[string]interface{})}
+	theme := ctx.UserTheme()
 	b.params["menu"] = ""
 	b.params["csrf"] = ctx.CSRF()
 	b.params["flashMessage"] = sess.FlashMessage()
 	b.params["flashErrorMessage"] = sess.FlashErrorMessage()
-	b.params["theme"] = ctx.UserTheme()
+	b.params["theme"] = theme
+	b.params["theme_checksum"] = static.StylesheetsChecksums[theme]
+	b.params["app_js_checksum"] = static.JavascriptsChecksums["app"]
+	b.params["sw_js_checksum"] = static.JavascriptsChecksums["sw"]
 	return b
 }