Как я могу заставить iOS кэшировать документы HTML5 с параметрами запроса? - PullRequest
1 голос
/ 16 ноября 2011

Я пытаюсь открыть мобильное сафари из приложения для iOS, чтобы открыть автономное приложение HTML5 с openURL:

NSString * urlString = [NSString stringWithFormat: @ "http://localhost:8080/blargh.html"]; [[UIApplication sharedApplication] openURL: [NSURL URLWithString: urlString]];

blargh.html имеет манифест HTML5:

Этот манифест содержит html-файл: Манифест кэша blargh.html

Это все работает, как и ожидалось, когда я открываю URL из моего приложения для iOS, он кэшируется правильно и работает в автономном режиме. Тем не менее, не кэшируется должным образом, если я включаю динамические параметры cgi:

NSString * urlString = [NSString stringWithFormat: @ "http://localhost:8080/blargh.html?q=p"]; [[UIApplication sharedApplication] openURL: [NSURL URLWithString: urlString]];

Это в основном означает, что я не могу открыть автономное приложение HTML5 из ​​приложения iOS, передать его параметры и правильно его кешировать. Мне нужно открывать приложение в мобильном сафари, а не в веб-просмотре по причинам, которые выходят за рамки этого поста. Насколько я знаю, нет возможности отправить параметры сообщения через openURL. Я бы надеялся, что система кэширования мобильного сафари была бы достаточно умной, чтобы игнорировать параметры cgi.

Есть предложения?

1 Ответ

1 голос
/ 17 ноября 2011

Параметры запроса портят кеш приложения, потому что он предназначен для статического содержимого. Обычный подход состоит в том, чтобы загрузить статическую страницу и затем использовать JavaScript для ее динамического заполнения, кэшируя любые данные в DOM Storage , чтобы вы могли использовать ее и в автономном режиме.

Однако, если вам просто нужно кэшировать один файл и ваш сервер поддерживает маршрутизацию или перезапись URL , то вы можете воспользоваться тем, что на странице, содержащей ссылку на appcache файл всегда кэшируется, поэтому его не нужно указывать в манифесте.

Перепишите свой URL из этого:

http://localhost:8080/blargh.html?q=p

Кому:

http://localhost:8080/blargh.html/q/p
...