Revert "cache data.js (#153)" (#157)

This reverts commit 2cd97ecfaa.
This commit is contained in:
Telokis
2024-10-01 22:03:23 +02:00
committed by GitHub
parent f061811bce
commit f46540f429
+44 -72
View File
@@ -5,7 +5,6 @@ from admin import *
from crons import * from crons import *
from tests import * from tests import *
from tasks import * from tasks import *
import hashlib
@ndb.toplevel @ndb.toplevel
@app.route('/comm') @app.route('/comm')
@@ -158,80 +157,53 @@ def serve_codejs():
else: request.response.set_data("game_log('load_code: Code not found',colors.code_error)") else: request.response.set_data("game_log('load_code: Code not found',colors.code_error)")
return request.response return request.response
# Cache when data is prepared
cached_data = None
cached_data_hash = None
@app.route('/data.js',methods=['GET','POST']) @app.route('/data.js',methods=['GET','POST'])
@ndb.toplevel @ndb.toplevel
def serve_datajs(): def serve_datajs():
global cached_data domain=gdi(request); additional=""
global cached_data_hash geometry={}
for name in maps:
init_request(request) key=maps[name]["key"]
if maps[name].get("ignore"): continue
additional="" #if name=="test" and not is_sdk: key="test"
#logging.info(key)
if request.values.get("reload"): geometry[name]=get_by_iid("map|%s"%key).info.data
additional="add_log('Game data reloaded','#32A3B0');\napply_backup()\n" data={
elif cached_data_hash != None and request.headers.get('If-None-Match') == cached_data_hash: "version":game_version,
# The ETag matches "achievements":achievements,
request.response.status_code = 304 "animations":animations,
return request.response "monsters":monsters,
"sprites":sprites,
if cached_data == None or cached_data_hash == None: "maps":maps,
geometry={} "geometry":geometry,
"npcs":npcs,
for name in maps: "tilesets":tilesets,
key=maps[name]["key"] "imagesets":imagesets,
if maps[name].get("ignore"): continue "items":items,
#if name=="test" and not is_sdk: key="test" "sets":sets,
#logging.info(key) "craft":craft,
geometry[name]=get_by_iid("map|%s"%key).info.data "titles":titles,
"tokens":tokens,
data={ "dismantle":dismantle,
"version":game_version, "conditions":conditions,
"achievements":achievements, "cosmetics":cosmetics,
"animations":animations, "emotions":emotions,
"monsters":monsters, "projectiles":projectiles,
"sprites":sprites, "classes":classes,
"maps":maps, "dimensions":dimensions,
"geometry":geometry, "images":precomputed.images,
"npcs":npcs, "levels":levels,
"tilesets":tilesets, "positions":positions,
"imagesets":imagesets, "skills":skills,
"items":items, "events":events,
"sets":sets, "games":games,
"craft":craft, "multipliers":multipliers,
"titles":titles, #"codes":codes,
"tokens":tokens, "docs":docs,
"dismantle":dismantle, "drops":drops,
"conditions":conditions, }
"cosmetics":cosmetics, if request.values.get("reload"): additional="add_log('Game data reloaded','#32A3B0');\napply_backup()\n"
"emotions":emotions, request.response.set_data("var G=%s;\n%s"%(json.dumps(data),additional))
"projectiles":projectiles,
"classes":classes,
"dimensions":dimensions,
"images":precomputed.images,
"levels":levels,
"positions":positions,
"skills":skills,
"events":events,
"games":games,
"multipliers":multipliers,
#"codes":codes,
"docs":docs,
"drops":drops,
}
cached_data = json.dumps(data)
cached_data_hash = hashlib.md5(cached_data).hexdigest()
# The browser should cache this
request.response.headers['ETag'] = cached_data_hash
request.response.headers['Cache-Control'] = "max-age=31536000" # 1 Year
request.response.set_data("var G=%s;\n%s"%(cached_data,additional))
return request.response return request.response