use NSCache to cache nodes, instead of NSDictionary