I am having a bit of trouble. I am making a mobile version of our website, and want to cache some of the more important pages, not just for use offline, but for added speed in some cases.
First question: Do I have to manually cache the pages to speed up performance? I am using AJAX calls to bring in content, and it obviously doesn't work offline without manually caching, but while online is Safari going to request a page via ajax if it's already in the cache?
I currently have it working correctly. My pages cache and work both online and offline. But if I don't specify all pages I want cached, it appears with every ajax call, those pages are requested again, not loaded from cache.
Second Question (My actual problem): When online or offline, and using a .manifest file to manually cache files, it appears that the iPhone sets itself in a "offline" mode, even when online. So when I run my ajax call, if the page is not cached, I get an error.
$.ajax({
url: page,
data: 'ajax=true',
context: $(newContent),
success: function(data, status){
if (status == 'error') {
alert("You must be online to view this page.");
} else {
//EXECUTED CODE HERE
}
}, complete: function(data, status){
setTimeout(function(){
if (status != 'error') {
//EXECUTED CODE HERE ON COMPLETE
}
}, 700);
}
});
So, it's just a simple ajax call and everything works perfect if I am not using a manifest file to manually create a cache. But if I do use it, then I always get an error on the ajax call when requested uncached pages even when ONLINE. It's like the iPhone switches Safari to offline mode if there is a cache to be used.
Is there some sort of workaround or fix for this. I've been combing the internet for hours trying to find an answer.
I even added a click event to check the state of window.navigator.onLine and it always returns true, as it should, when online. By why does the ajax call fail? It's like the iPhone will not send requests if a cache exists.
I think I might be onto something. I am caching the pages:
- degrees.cfm
- degrees.cfm?ajax=true
- degrees.cfm?degreeType=Bachelors
But I am not caching the pages like:
- degrees.cfm?degree=1
- degrees.cfm?degree=2
- etc.
At first I only cached degrees.cfm, but obviously I need to cache the pages with the GET variables or render them useless. It appears that if a single page is cached without a variable, then safari might still look to that page, or at least think it is cached if different variables are on it. So when I send a request to degrees.cfm?degree=1, Safair thinks the page is in the cache because degree.cfm is there without any variables. So it doesn't even try to get the page from the server, even when online.
Comments
Post a Comment