support caching, non ajax method

random still possible