I would try something like this tell the cache decorator to use a different cache key for Ajax and non-Ajax requests:
from django.views.decorators.cache import cache_page
from django.views.decorators.vary import vary_on_headers
@cache_page(60 * 60 * 12)
@vary_on_headers('X-Requested-With')
def items(request, pattern=None, specialurl=None):
if request.is_ajax():
template = "result_ajax.html"
else:
template = "index.html"