La questione del Caching deve essere gestita sul server (e dato che usi ASP non so proprio come aiutarti, fai una ricerca su Google su come usare Caching su IIS). MySQL usa gia da solo un sistema interno di indicizzazione per essere più veloce, ma c'è una funzionalità chiamata appunto MySQL QUERY CACHE, che mi sembra faccia a caso tuo. L'unica cosa da implementare, di un po' magheggioso, sarebbe un sistema per svuotare la cache di MySQL ogni volta che il cliente aggiorna i prodotti in modo che le nuove richieste siano aggiornate.
Dai un'occhio a:
http://dev.mysql.com/doc/refman/5.1/en/query-cache.html
http://dev.mysql.com/doc/refman/5.1/...operation.html
http://dev.mysql.com/doc/refman/5.1/...iguration.html
http://dev.mysql.com/doc/refman/5.1/...in-select.html
Per la questione di AJAX e JSON non è indispensabile, è solo uno strumento diverso dall'iFrame per diminuire il carico di traffico inviato dal server (per dire, se devo passare del testo HTML è molto più pesante che inviare una risposta JSON).
Se vuoi documentarti: http://www.json.org/