我正在实现一个非常轻量级的Web项目,它只有一个页面,在图表中显示数据。我使用Django作为Web服务器,并使用d3.js作为此图的绘图例程。正如你可以想象的那样,Django服务器只有几个简单的时间序列,所以我想知道我是否可以在RAM中保存这个变量。我的第一个试验阳性,我在我的views.py是这样的:django vars in ram
X = np.array([123,23,1,32,123,1])
@csrf_exempt
def getGraph(request):
global X
return HttpResponse(json.dumps(X))
通知,X
被另一个功能飘飞更新,但所有用户的访问是只读的。我必须处理
- 安全问题通过定义一个全局变量?
- 一般的不一致?
我发现a thread讨论Django中的全局变量,但在这种情况下,难点在于处理多个写入访问。
要回答潜在的问题,为什么我不想在数据库中存储数据:我在我的X
中获得的所有数据都已存储在一个巨大的远程数据库中,并且此Web应用程序只需显示数据。
作为Django社区的成员,我不一定会说“不要” - 我已经做了几件非常类似的事情。但是,对于缓存后端而言,这是解决此问题的更好方法。 – 2012-08-14 11:26:48
@Joe我试过了,它对正常的http请求工作正常,但是当我通过AJAX调用它时,它没有被缓存。我猜,Django认为每一个'AJAX'请求都与之前的不同,并再次计算'X'。如何处理?但是,再次感谢,推荐Django缓存系统 - 它似乎比全球变化更优雅 – 2012-08-14 13:16:10
不介意!我通过使用'低级高速缓存API'解决了这个问题。这很完美。非常感谢 – 2012-08-14 13:27:11