Skip to main content

Iphone runs ONLY from cache even when online



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

Popular posts from this blog

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex