I am currently working on an MVC4 application that accesses a set of wcf services which delivers content.

I have a page that lists products. This page has a pagination feature called infinite scrolling, so as you scroll down the page, products are loaded.

I am wondering what is the best way to achieve such a pagination feature. The data source is sql server. Options as I see it are:

1. Paginate at the sql server 2012 layer - returning only the required recordset and feed it back up the stack through wcf and in to the MVC application to display
2. As option 1 but also include caching at the WCF layer so that the recordset is cached long term. This will mean though that a number recordsets will be stored in cache instead of one large one
3. Cache all the data, and paginate the cached items, returning the subset from the WCF services cached data

Note: I am using asp.net for caching.

So I am looking for feedback as to the best practice for this.