Kabul edelim, AppCache hem rahatsız edici hem de sorunlar var [1, 2, 3]. En büyük sınırlamalardan biri, öğeleri istek üzerine dinamik olarak önbelleğe almanın mümkün olmamasıdır. Esasen, bir uygulamayı çevrimdışına alma söz konusu olduğunda bu durum her şeye karşıdır ya da hiç değildir. Manifest'teki her şey önden önbelleğe alınır veya hiçbir şey önbelleğe alınmaz.
HTML5 FileSystem API, AppCache'in eksiklikleri için cazip bir çözüm haline gelir. Dosyaları ve klasör hiyerarşilerini yerel (korumalı alanlı) dosya sisteminde programatik olarak depolayabilir ve daha sonra, gerektiğinde kaynakları tek tek ekleyebilir/güncelleyebilir/kaldırabilir. Hatta iş arkadaşım Boris Smus, bu tür çevrimdışı önbelleğe alma işlemlerini oyunlar bağlamında yönetebilmek için güzel bir kitaplık bile yazdı. Aynı fikir, herhangi bir web uygulaması türünde çalışacak şekilde yorumlanabilir.
crbug.com/89271, göreli filesystem: URL yollarının çekici gibi çalışmasını sağlayan Dosya Sistemi API'si için önemli bir düzeltmedir.
Örneğin, index.html dosyasını dosya sisteminin kök klasörüne (fs.root
) kaydettiğimi, bir img klasörü oluşturduğumu ve "test.png" dosyasını kaydettiğimi varsayalım. Bu iki dosya için filesystem:
URL'si sırasıyla filesystem:http://example.com/temporary/index.html
ve filesystem:http://example.com/temporary/img/test.png
olur. Ardından, img.src
için "test.png" kullanmak isteseydim tam mutlak yolunu kullanmam gerekirdi: <img src="filesystem:http://example.com/temporary/img/test.png">
. Bu da, ilgili dosyanın filesystem:
URL'sine işaret etmek için index.html'deki tüm göreli URL'lerin yeniden yazılması gerektiği anlamına geliyordu. Hiç hoş değil! Şimdi, bu hata düzeltmesiyle, dosya sistemi kaynağına doğru şekilde çözümleneceği için dosyanın göreli yolunu (<img src="img/test.png">
) tutabiliyorum.
Bu özellik, çevrimiçi sürümle tam olarak aynı klasör yapısını korurken, bir sayfayı aşağı çekip tüm kaynaklarını çevrimdışı olarak kaydetmeyi önemsiz hale getirir.