Aside from Martijn Welker's response, here are some additional points that may be beneficial.
1. Start by retrieving the large data after the page has finished loading. While smaller data like global stats can be retrieved during the initial page load using a resolver, data in the table should be fetched after the page is fully loaded. Consider displaying a loading icon on the table section during this process.
2. Instead of presenting the data directly to the user as JSON (similar to a JSON file), consider improving the display by incrementally revealing the data similar to how JSONblob.com functions. For example, showing top level keys initially and then allowing users to click on a key to reveal further details. Design your backend to accommodate different requests for various levels and keys or utilize headers like:
user > profile > education
Allow users to interact with these headers and store previous details if they wish to navigate back.
3. Utilize pagination (either on the backend or frontend) depending on your requirements. If you do not need to sort or filter the data and it is read-only, consider implementing one-way binding (Angular 1.3+) to reduce watches on your list. Additionally, consider using plain JavaScript to construct this list, although pagination might not typically be required for displaying JSON data.