HTML5技术

H5 缓存机制浅析 移动端 Web 加载性能优化 - 第八号当铺(8)

字号+ 作者:H5之家 来源:H5之家 2016-03-03 19:21 我要评论( )

浏览器给虚拟文件系统提供了两种类型的存储空间:临时的和持久性的。临时的存储空间是由浏览器自动分配的,但可能被浏览器回收;持久性的存储空间需要显示的申请,申请时浏览器会给用户一提示,需要用户进行确认。

浏览器给虚拟文件系统提供了两种类型的存储空间:临时的和持久性的。临时的存储空间是由浏览器自动分配的,但可能被浏览器回收;持久性的存储空间需要显示的申请,申请时浏览器会给用户一提示,需要用户进行确认。持久性的存储空间是 WebApp 自己管理,浏览器不会回收,也不会清除内容。持久性的存储空间大小是通过配额来管理的,首次申请时会一个初始的配额,配额用完需要再次申请。

虚拟的文件系统是运行在沙盒中。不同 WebApp 的虚拟文件系统是互相隔离的,虚拟文件系统与本地文件系统也是互相隔离的。

File System API 提供了一组文件与文件夹的操作接口,有同步和异步两个版本,可满足不同的使用场景。下面通过一个文件创建、读、写的例子,演示下简单的功能与用法。

 

 

 

 

 

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;

//请求临时文件的存储空间

if (window.requestFileSystem) {

     window.requestFileSystem(window.TEMPORARY, 5*1024*1024, initFS, errorHandler);

}else{

  alert('Sorry! Your browser doesn\'t support the FileSystem API');

}

//请求成功回调

function initFS(fs){

  //在根目录下打开log.txt文件,如果不存在就创建

  //fs就是成功返回的文件系统对象,fs.root代表根目录

  fs.root.getFile('log.txt', {create: true}, function(fileEntry) {

  //fileEntry是返回的一个文件对象,代表打开的文件

  //向文件写入指定内容

  writeFile(fileEntry);

  //将写入的内容又读出来,显示在页面上

  readFile(fileEntry);

  }, errorHandler);

}

//读取文件内容

function readFile(fileEntry)

{

    console.log('readFile');

   // Get a File object representing the file,

   // then use FileReader to read its contents.

   fileEntry.file(function(file) {

     console.log('createReader');

      var reader = new FileReader();

      reader.onloadend = function(e) {

        console.log('onloadend');

        var txtArea = document.createElement('textarea');

        txtArea.value = this.result;

        document.body.appendChild(txtArea);

      };

      reader.readAsText(file);

   }, errorHandler);

}

//向文件写入指定内容

function writeFile(fileEntry)

{

    console.log('writeFile');

    // Create a FileWriter object for our FileEntry (log.txt).

    fileEntry.createWriter(function(fileWriter) {

      console.log('createWriter');

      fileWriter.onwriteend = function(e) {

        console.log('Write completed');

      };

        fileWriter.onerror = function(e) {

          console.log('Write failed: ' + e.toString());

        };

        // Create a new Blob and write it to log.txt.

        var blob = new Blob(['Hello, World!'], {type: 'text/plain'});

        fileWriter.write(blob);

     }, errorHandler);

}

function errorHandler(err){

 var msg = 'An error occured: ' + err;

 console.log(msg);

};

 

 

 

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler - 一线码农

    用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler - 一线

    2017-04-29 10:01

  • 浓缩的才是精华:浅析GIF格式图片的存储和压缩 - 腾讯云技术社区

    浓缩的才是精华:浅析GIF格式图片的存储和压缩 - 腾讯云技术社区

    2017-04-07 15:08

  • 认识浏览器缓存 - TechSnail

    认识浏览器缓存 - TechSnail

    2017-04-03 09:02

  • 【实践】基于接口的插件机制 - 悠扬的牧笛

    【实践】基于接口的插件机制 - 悠扬的牧笛

    2017-01-18 14:03

网友点评