设为首页 收藏本站
查看: 785|回复: 0

[经验分享] 打造支持apk下载和html5缓存的 IIS(配合一个超简单的android APP使用)详解

[复制链接]

尚未签到

发表于 2015-11-15 09:34:41 | 显示全部楼层 |阅读模式
  为什么要做这个看起来不靠谱的东西呢?
  因为刚学android开发,还不能很好的熟练控制android界面的编辑和操作,所以我的一个急着要的运用就改为html5版本了,反正这个运用也是需要从服务器获取大量数据来展示在手机上面的,也就是说:必须联网,才能正常工作,于是想了一下,反正都要联网获取数据,为什么不直接用我相对熟悉一点的 html来做这个运用呢?省的花费不够用的时间去学习android界面的控制,于是就简单了:用蹩脚的手段做了一个android程序的启动欢迎界面,内页就是一个全屏的webview,启动后就连上IIS服务器获取网页展示,就可以了。
  可是话说回来,这样不如直接写一个手机版网页站点,用手机内建浏览器打开看就行了嘛,为什么还得大费周章弄APP呢?因为......这个APP还要有通知栏提醒功能,运行一个后台服务获取服务器上提供的预警等信息,所以光网页版是不够的,于是就生出了这个怪异的APP。
  做好的app放在服务器上,本来图省事,apk文件压缩成zip包,给客户下载,结果......无语的是,好多客户手机上没有解压软件,而且还不会自己下载安装解压软件,没办法,只好把iis加上支持apk下载的功能了,之前试过IIS默认安装后,IIS是不支持apk文件下载的,还好资料好查,添加个apk下载支持也超简单,就顺手弄了。
  另外,考虑到网页版运用消耗流量肯定很大,为了节省流量,就顺手引入了html5的缓存功能,但是这个功能中的一个关键文件:缓存列表 文件,貌似用直接用txt做扩展名的不行。非得用那个默认的扩展名(不知道其他扩展名行不行,但是貌似都得设置那个扩展名的MIME类型才可以),这个扩展名的支持也是IIS默认没有的,也要手工添加,还好都不算复杂。
  但是网上都没有找到图片实例,于是手闲之余,顺便做个记录,就抓了个简单的图,奉上,这才有了这篇文章。
  如下图:
DSC0000.png


  apk下载支持:
  扩展名: .apk


  MIME类型:application/vnd.android.package-archive
  


  html5缓存支持
  
  扩展名: .manifest


  MIME类型:text/cache-manifest


  apk下载支持没什么好说的了,直接把apk文件扔到服务器就行,下面简单说下html5缓存的一些注意要点:
  1.html5可被缓存的例子:
  c.html
  

<!DOCTYPE html>
<html manifest=&quot;./mymanifest.manifest&quot;>
<body>
<script type=&quot;text/javascript&quot; src=&quot;./js/demo_time.js&quot;>
</script>
<p id=&quot;timePara&quot;><button onclick=&quot;getDateTime()&quot;>获得日期和事件</button></p>
<p><img src=&quot;./i/w3school_banner.gif&quot; /></p>
<p>请打开<a href=&quot;./html5_html_manifest.html&quot; target=&quot;_blank&quot;>这个页面</a>,然后脱机浏览,重新加载页面。页面中的脚本和图像依然可用。</p>
</body>
</html>

偷了个懒,直接用w3school的例子来弄了: http://www.w3school.com.cn/example/html5/html5_html_manifest.html  
  它这个例子不知道怎么的,貌&#20284;它IIS没设置还是怎么,反正我测试缓存是失败的。
  上面文件中引用到的文件有:
  ./mymanifest.manifest
  ./js/demo_time.js
  ./i/w3school_banner.gif
  为了测试 FALLBACK: 所以故意没有放 ./html5_html_manifest.html 在服务器上。按照以上弄好html主文件后,下面就是编写缓存列表文件:
  2.缓存列表文件编写

CACHE MANIFEST
# 2014-05-22 v1.0.0
CACHE:
./i/w3school_banner.gif
./js/demo_time.js

NETWORK:
login.asp

FALLBACK:
/ ./err/404.html

  上面就是一个完整的缓存列表文件的例子,可以看到没加入 ./html5_html_manifest.html ,为了测试最后一个FALLBACK的效果,前面几个标签没什么好说的,网络上例子和说明一大把,着重说下最后一个失效时回调的页面设置,这里一行为一个单位,一行有两个元素,第一个是网络正常或文件存在时调用的页面,后跟一个空&#26684;和第一个元素隔开,第二和元素就是网络不通,或者文件不存在是的替换页面,上面的例子中,第一个元素用 / 符号代替,表示所有未找到或网络未连接时无法访问的文件都用后面这个文件
./err/404.html 替换显示。/ 在这里是通配符的作用,类&#20284; * 。

  


  3.webview设置
  当然,如果你的浏览器本身支持缓存的话,那么这里下面的内容你就不必看了,上面设置完毕后,你的页面就可以被顺利缓存了。
  但是我打造的是自己引用webview做的APP,默认缓存是关闭的,那么就必须对webview进行设置,否则照样不能缓存:这里只给出webview设置的代码片段了,详细的调用webview的例子网上一大把,在此不做冗述。

     WebSettings  webseting  =  mWebView.getSettings();   
webseting.setJavaScriptEnabled(true);  //js支持
webseting.setSupportZoom(true);  
webseting.setDefaultTextEncodingName(&quot;gb2312&quot;); //默认代码页
mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);  //滚动条
mWebView.requestFocus();  
//下面为缓存开启和设置的部分。
webseting.setDomStorageEnabled(true);    /*如果需要存储一些简单的用key/value对即可解决的数据,DOM Storage是非常完美的方案。
* 根据作用范围的不同,有Session Storage和Local Storage两种,
* 分别用于会话级别的存储(页面关闭即消失)和本地化存储(除非主动删除,否则数据永远不会过期)。
*/
webseting.setAppCacheMaxSize(1024*1024*8);//设置缓冲大小,我设的是8M
String  appCacheDir  =  this .getApplicationContext().getDir(&quot;cache&quot;, Context.MODE_PRIVATE).getPath();       //设置缓存路径
webseting.setAppCachePath(appCacheDir); //设置缓存路径
webseting.setAllowFileAccess(true);   //设置可以访问文件读取文件
webseting.setAppCacheEnabled(true);   // 开启APP缓存
webseting.setCacheMode(WebSettings.LOAD_DEFAULT|WebSettings.LOAD_CACHE_ELSE_NETWORK); //设置缓存模式为:根据html5缓存列表文件更新缓存和在网络未连接时使用缓存。


完成以上4步(IIS设置算一步),你的APP才能正确的缓存网页。
版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-139406-1-1.html 上篇帖子: IIS服务器的SMTP发送邮件 下篇帖子: 用IIS建立虚拟主机,实现在一台主机上建立多个虚拟主机的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表