Merge "Allow cliend-side caching"

This commit is contained in:
Jenkins
2014-09-08 08:50:00 +00:00
committed by Gerrit Code Review
3 changed files with 19 additions and 5 deletions

View File

@@ -17,6 +17,7 @@ import cProfile
import functools
import json
import operator
import time
import flask
from oslo.config import cfg
@@ -483,7 +484,19 @@ def response():
else:
mimetype = 'application/json'
return flask.current_app.response_class(data, mimetype=mimetype)
resp = flask.current_app.response_class(data, mimetype=mimetype)
update_time = vault.get_vault()['vault_next_update_time']
now = utils.date_to_timestamp('now')
if now < update_time:
max_age = update_time - now
else:
max_age = 0
resp.headers['cache-control'] = 'public, max-age=%d' % (max_age,)
resp.headers['expires'] = time.strftime(
'%a, %d %b %Y %H:%M:%S GMT',
time.gmtime(vault.get_vault()['vault_next_update_time']))
resp.headers['access-control-allow-origin'] = '*'
return resp
return response_decorated_function

View File

@@ -89,7 +89,7 @@ function renderTableAndChart(url, container_id, table_id, chart_id, link_param,
$.ajax({
url: makeURI(url),
dataType: "jsonp",
dataType: "json",
success: function (data) {
var tableData = [];
@@ -325,7 +325,7 @@ function initSingleSelector(name, api_url, select2_extra_options, change_handler
$.ajax({
url: api_url,
dataType: "jsonp",
dataType: "json",
success: function (data) {
var initial_value = getUrlVars()[name];
if (initial_value) {

View File

@@ -91,11 +91,12 @@ def get_vault():
if not getattr(flask.request, 'stackalytics_updated', None):
time_now = utils.date_to_timestamp('now')
may_update_by_time = (time_now > vault.get('vault_update_time', 0) +
cfg.CONF.dashboard_update_interval)
may_update_by_time = time_now > vault.get('vault_next_update_time', 0)
if may_update_by_time:
flask.request.stackalytics_updated = True
vault['vault_update_time'] = time_now
vault['vault_next_update_time'] = (
time_now + cfg.CONF.dashboard_update_interval)
memory_storage_inst = vault['memory_storage']
have_updates = memory_storage_inst.update(compact_records(
vault['runtime_storage'].get_update(os.getpid())))