在我的一个Web服务中,我使用memcached缓存结果。我可以缓存结果json或源对象。但是如果我缓存源对象,我必须在发送结果之前每次都将它转换为json(我在我的代码中这样做,因为我使用json视图来动态限制几列)。如果我缓存我的JSON字符串(相当大),我只需要返回它。我的问题是,JSON字符串会比java对象消耗更多内存,还是缓存JSON字符串是个坏主意?
答案 0 :(得分:2)
如果通过memcache缓存源对象,则必须对其进行序列化和反序列化。这是很多开销。因此,缓存JSON对象的速度更快。
关于此的两点建议:
避免使用字符编码:如果可能,将JSON对象存储为字节数组而不是字符串或char数组,并通过HttpResponse.getOutputStream(json)返回。这样您还可以绕过其他字符编码。
缓存整个响应:如果JSON是REST查询的结果,最好通过应用程序前面的缓存服务器(例如清漆,nginx,apache流量服务器)缓存完整请求。只需在其上放置正确的http缓存标头即可。