It did appear that the json wasn’t being cached by wp-super-cache, but we decided to take a different approach. By using the transient api, we were able to do a faux-cache on all json, and drastically reduce the taxing of the database. Then on the ajax side of things, we are caching the html that is created from this semi-cached json. Things are super speedy! Here is a scaled down version of the code and concept.
$transient_key = 'my-transient-key';
$data = get_transient( $transient_key );
if ( $data == '' ) {
$args = array(
'post_type' => 'brand',
'posts_per_page' => 50
);
$postsArray = array();
// The Query
query_posts( $args );
// The Loop
while ( have_posts() ) : the_post();
$brand_id = get_the_ID();
$slug = basename(get_permalink());
$title = get_the_title();
$description = get_the_content();
$posts = array(
'brand_id' => $brand_id,
'machine_name' => $slug,
'postTitle' => $title,
'description' => $description,
);
array_push($postsArray,$posts);
endwhile;
$data = json_encode($postsArray);
set_transient( $transient_key, $data, 60 * 60 * 24 ); // one day
} // now all the brand information is cached as one table call.
echo $data;