ограничение на размер загружаемого файла - PullRequest
1 голос
/ 25 июня 2011

Я учусь использовать файлы манифеста, и у меня возник этот вопрос.Что если какой-то веб-сайт создаст файл манифеста, который заставит меня кешировать файлы, скажем, на 3 МБ.3MB - это много для моего iPhone, когда я работаю на 3G.Так какой-нибудь порочный сайт может создать такой файл манифеста и заставить меня использовать все мои данные?

Другой вопрос заключается в том, что, как ответственный разработчик, можно ли в любом случае определить, использует ли пользователь 3G или нет, поэтому я могу предоставить меньший файл манифеста в первом случае?

Спасибо

Ответы [ 3 ]

4 голосов
/ 07 июля 2011

Ваш вопрос помечен 'iPhone', поэтому я собираюсь дать ответ для iOS.

Объем автономного хранилища, в котором хранятся файлы, связанные с вашим манифестом, ограничен 5 МБ. Все это является косвенным доказательством, поскольку в документах Apple этот предел не указан. Тем не менее, некоторые инженеры Apple признали, что существует предел . В некоторых случаях новейшие версии Mobile Safari позволяют пользователю расширять хранилище, но вы, как разработчик, не можете заставить их сделать это.

5 МБ не так уж много, и многие пользователи наверняка заметят, что что-то происходит, и если они не хотят, чтобы это произошло, просто закройте вкладку. Я понимаю, что не все страны имеют одинаковые ограничения, но большинство пользователей в США ограничены 2 ГБ в месяц. В таком случае ничего не подозревающему пользователю придется случайно перезагружать ваш манифест и файлы, перечисленные в нем 100 раз, чтобы использовать только 25% выделенной им полосы пропускания. Это довольно низкий лимит, и возможность злонамеренного использования чужих данных довольно удалена.

Чтобы узнать, находится ли пользователь в сети 3G или WiFi, посмотрите пример Reachability в Центре разработчиков Apple. Это именно так. Я не знаю, как это сделать в веб-приложении (в отличие от нативного).

1 голос
/ 02 июля 2011
0 голосов
/ 07 июля 2011

Я не уверен, как вы получаете этот файл манифеста, но если вы используете NSURLConnection, это просто вопрос сохранения промежуточного количества загруженных данных (лучшее место - соединение: didReceiveData:) и отмена соединения, если оно становится выше 3 МБ.Не забывайте обнулять это число при каждом подключении.

Что касается поиска устройства, то особенности кажутся более хитрыми, чем должны быть, но я нашел довольно простой пример того, как это сделать (исходный код n 'все): Определите, является ли iPod первым или вторым поколением

...