kopia lustrzana https://github.com/simonw/datasette
Include sha1 hash in /static/app.css URL
This means that when Datasette's CSS changes the new CSS will be loaded even though browsers may have cached the previous version. Closes #154pull/178/head
rodzic
446f4b8322
commit
16dfccb1c5
|
@ -9,6 +9,7 @@ import sqlite3
|
|||
from pathlib import Path
|
||||
from concurrent import futures
|
||||
import asyncio
|
||||
import os
|
||||
import threading
|
||||
import urllib.parse
|
||||
import json
|
||||
|
@ -45,7 +46,11 @@ connections = threading.local()
|
|||
class RenderMixin(HTTPMethodView):
|
||||
def render(self, templates, **context):
|
||||
return response.html(
|
||||
self.jinja_env.select_template(templates).render(**context)
|
||||
self.jinja_env.select_template(templates).render({
|
||||
**context, **{
|
||||
'app_css_hash': self.ds.app_css_hash(),
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
|
||||
|
@ -835,6 +840,13 @@ class Datasette:
|
|||
self.template_dir = template_dir
|
||||
self.static_mounts = static_mounts or []
|
||||
|
||||
def app_css_hash(self):
|
||||
if not hasattr(self, '_app_css_hash'):
|
||||
self._app_css_hash = hashlib.sha1(
|
||||
open(os.path.join(app_root, 'datasette/static/app.css')).read().encode('utf8')
|
||||
).hexdigest()[:6]
|
||||
return self._app_css_hash
|
||||
|
||||
def get_canned_query(self, database_name, query_name):
|
||||
query = self.metadata.get(
|
||||
'databases', {}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
<link rel="stylesheet" href="/-/static/app.css">
|
||||
<link rel="stylesheet" href="/-/static/app.css?{{ app_css_hash }}">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
{% for url in extra_css_urls %}
|
||||
<link rel="stylesheet" href="{{ url.url }}"{% if url.sri %} integrity="{{ url.sri }}" crossorigin="anonymous"{% endif %}>
|
||||
|
|
Ładowanie…
Reference in New Issue