Jak Mogę poprosić o zwiększenie rozmiaru localstorage HTML5 na iPadzie, tak jak robi to aplikacja FT web app?

Jeśli otworzysz http://app.ft.com (mobilna aplikacja internetowa Financial Times), zostaniesz poproszony o dodanie aplikacji do "domu".

Po wykonaniu tej czynności, po otwarciu aplikacji, zostaniesz ponownie poproszony o umożliwienie zwiększenia rozmiaru bazy danych localstoreage do 50 MB.

    Jak można to zrobić? Czy istnieje jakieś wywołanie JavaScript API? Pozwolenia czy coś? Czy to iPad (iOS?) konkretne, czy działa na innych przeglądarkach Webkit?
Author: Paul D. Waite, 2011-06-08

5 answers

Przypadkiem coś o tym wiem;)

Nie ma interfejsu API do żądania zwiększenia rozmiaru pamięci dla istniejącej bazy danych. Jest jeden sposób, aby wymusić zwiększenie: Zapisz dane do bazy danych w takim rozmiarze, że wymagane jest zwiększenie, monitując użytkownika. Jednak byłoby to powolne i nie ma sposobu, aby określić aktualnie przydzieloną przestrzeń, więc nie jest to zalecane.

Czarna żaba ma część tego poprawnego: jedynym porządnym sposobem na to jest zażądanie bardzo duża baza danych po otwarciu, na przykład:

openDatabase('databaseName', '1.0', 'My Database', 50*1024*1024, …

... aby zażądać 50MB miejsca.

Jednak, gdy użytkownik po raz pierwszy odwiedza witrynę, możesz nie chcieć monitować go o limit 50MB na raz; więc możesz pomyśleć, że możesz poprosić o 5MB na początku, a następnie ponownie otworzyć go za pomocą 50MB? Niestety, to nie działa - druga Otwarta próba, ze zwiększoną ilością, udaje się po cichu, nie skłaniając do zwiększenia rozmiaru i nie zwiększając w rzeczywistości dostępnych rozmiar.

Aplikacja FT uruchamia się z bazą danych "podglądu" o pojemności 5 MB, dzięki czemu użytkownik nie jest wyświetlany monit przy pierwszym załadowaniu. Stara się nie przekraczać tego limitu 5MB, ponieważ każde przydzielone miejsce musi być współdzielone we wszystkich bazach danych.

Jeśli użytkownik zdecyduje się zezwolić na przechowywanie większej ilości zawartości, aplikacja spróbuje otworzyć bazę danych o innej nazwie z 40MB miejsca (dla którego użytkownik jest poproszony o zatwierdzenie 50MB). Pozwala to na 40MB w tej bazie danych i 5MB w oryginalnym podglądzie bazy danych, więc nie powinno się zawieść podczas wstawiania wierszy - ponieważ 50MB to obecnie limit na iOS.

Wszystkie przeglądarki obecnie obsługują limity przestrzeni baz danych w różny sposób, więc jeśli planujesz współpracę między platformami, przetestuj uważnie. Desktop Safari radzi sobie z tym dość ładnie, pozwalając na znacznie większe; Chrome w ogóle nie pozwala na zwiększenie; itp. Spodziewaj się, że wszystkie implementacje "HTML5" różnią się w dziwny sposób:)

 37
Author: Rowan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-08 16:23:52

Ta baza danych jest częścią API Web SQL Database , które nie jest częścią HTML5. Użyj poniższego ustawienia rozmiaru bazy danych

function prepareDatabase(ready, error) {
    return openDatabase('documents', '1.0', 'Offline document storage', 50*1024*1024, function (db) {
        db.changeVersion('', '1.0', function (t) {
            t.executeSql('CREATE TABLE docids (id, name)');
        }, error);
    });
}

Wprowadzenie Web SQL baz danych Na HTML5 Doctor ma bardzo szybki samouczek, Jak to wszystko działa.

 7
Author: Black Frog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-08 11:27:57

Właśnie przetestowałem z moją aplikacją offline na iPadzie 2 (iOS 5.1.1), że nie musimy robić nic konkretnego wewnątrz aplikacji. Na przykład moja aplikacja ma około 18 MB danych offline. Kiedy przeglądarka uderzyła URL, przeglądarka wyskoczyła wiadomość z prośbą o zwiększenie rozmiaru do 25 MB i zaakceptowałem ją i wszystko jest w porządku. Dzięki

 1
Author: user1258024,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-31 18:13:11

Jest specyficzny dla przeglądarki. Większość ustawiła go na 5MB, a niektórzy dają możliwość zwiększenia go przez ustawienie gdzieś. Nie wszystkie przeglądarki oferują to jednak.

 0
Author: Ian Devlin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-08 10:58:03

Huh-Dive into HTML5 says that no browser supported this as of February 2011, so I guess this might be a iOS 4.3 thing? (iOS 4.3 wydany w marcu 2011 roku.)

Nie mogę znaleźć żadnych odniesień do niego z szybkiego Google. Własna dokumentacja programisty Apple może o tym wspomnieć - nie jestem pewien, czy jest to dostępne dla subskrybentów spoza SDK.

 -1
Author: Paul D. Waite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-05 20:44:18