Commit ca01360da83091581bea682ac47ae5a14abd6030
1 parent
80a8857b
Exists in
master
implementado o tratamento para requisi??es http condicionais (cache)
Showing
1 changed file
with
12 additions
and
3 deletions
Show diff stats
app/barrabrasil.py
| 1 | -from flask import Flask, url_for, render_template, request, make_response | 1 | +from flask import Flask, url_for, render_template, request, Response, make_response |
| 2 | +import hashlib | ||
| 2 | app = Flask(__name__) | 3 | app = Flask(__name__) |
| 3 | 4 | ||
| 4 | @app.route('/') | 5 | @app.route('/') |
| @@ -25,8 +26,16 @@ def barra(): | @@ -25,8 +26,16 @@ def barra(): | ||
| 25 | 'verde': '#00500F', | 26 | 'verde': '#00500F', |
| 26 | } | 27 | } |
| 27 | cor = paleta.get(nome_cor, '#004B82') | 28 | cor = paleta.get(nome_cor, '#004B82') |
| 28 | - resposta = make_response(render_template('barra-brasil.js', cor=cor)) | ||
| 29 | - resposta.headers['Content-type'] = 'application/javascript' | 29 | + conteudo = render_template('barra-brasil.js', cor=cor) |
| 30 | + etag = hashlib.sha1(conteudo.encode('utf-8')).hexdigest() | ||
| 31 | + if request.if_none_match and \ | ||
| 32 | + etag in request.if_none_match: | ||
| 33 | + resposta = Response(status=304) | ||
| 34 | + else: # nao esta em cache do navegador | ||
| 35 | + resposta = make_response(conteudo) | ||
| 36 | + resposta.set_etag(etag) | ||
| 37 | + resposta.headers['Content-type'] = 'application/javascript' | ||
| 38 | + resposta.headers['Cache-control'] = 'max-age: 3600' | ||
| 30 | return resposta | 39 | return resposta |
| 31 | 40 | ||
| 32 | if __name__ == '__main__': | 41 | if __name__ == '__main__': |