背景
由于手上的Android app需要改版,用户流量越发增加,H5活动页面、展示页面也陆续地增加。所以打算基于native实现缓存方案加速。
架构
我们的架构是hybrid app,只有首页是native实现的,下面的几个条目作为H5的入口。
(为避免广告嫌疑,已经屏蔽相关字眼)
解决方案
上网查了一下hybrid app的H5加速方案,详见:http://trock.lofter.com/post/117023_e8e175
方案一:使用manifest,但是坑比较多,而且也不是最好的方案,一个文件改,所有都要更新。
方案二:打包下载前端资源,Android本地的解压。然后native和H5用spdy协议请求页面。Android可以实现增量更新。
我的疑惑
关于方案二是具体实现方法,我在网上搜索不到,而且很疑惑:
1.前端资源打包,是在服务器上发生的吗?
2.客户端如果知道有更新,对比md5,但不是说下载打包好变成一个zip包吗?那它怎么样去识别个边页面的更新?
或者我的理解完全错了?
有经验的同学请指教,谢谢!
저는 하이브리드 APP 개발 경험이 없지만 WebView + 페이지 형태로 제시할 기능이 많이 있습니다.
그래서 주제의 목적은 액세스 트래픽을 줄이는 것입니다. WebView 자체에는 캐싱 메커니즘이 있으므로 먼저 사진 및 기타 관련 리소스를 다운로드해야 하는지 모르겠습니다. 사진이 수정되었다는 것은 전체 페이지의 리소스를 다시 다운로드해야 한다는 의미가 아닌가요?
제 쪽은 로컬 HTML 페이지와 네트워크 이미지 형태이기 때문에 로컬 HTML 페이지만 업데이트해야 할 때마다 이미지나 CSS, js가 여전히 백엔드에 남아 있습니다. WebView는 해당 주체의 하이브리드 애플리케이션 개발 형태를 모르기 때문에 퍼블리싱이 쉽지 않습니다.
연결되지 않는 CDN이 문제를 해결합니다. .
저는 프론트엔드 개발을 담당하고 있습니다.
클라이언트 동료와 상의하여 두 가지 해결책을 얻었습니다.
① 백엔드는 자주 업데이트되지 않는 페이지를 패키징하고 클라이언트는 이를 압축 해제합니다.
② 자주 업데이트되는 페이지의 경우 백엔드는 다음과 같은 목록을 보냅니다. 목록에는 파일 이름, 버전 번호 및 md5가 있습니다. 클라이언트는 이 목록을 다운로드하고, diff 작업을 수행하고, 특정 규칙에 따라 파일을 다운로드, 교체 및 삭제합니다.
백엔드 동료들과 상의한 결과 다음과 같은 정보를 얻었습니다.
이 앱의 주요 업무는 백엔드입니다. 개정 후에도 현재 트래픽 수준은 5시에 여전히 1000qps에 한참 못 미치고 있습니다. 번, 그래서 현재 리소스가 CDN을 통해 실행되지 않아도 괜찮습니다. 이 단계에서는 프런트엔드 성능 최적화가 그다지 필요하지 않으며 파일 디렉터리와 코드를 재구성하는 것이 더 중요합니다.
종합 솔루션:
이 단계에서는 성능 최적화에 대해 너무 많이 고려할 필요가 없으므로 고객 동료로부터 얻은 솔루션이 나중에 구현되지 않을 수도 있습니다. @zzxxasp 동급생이 언급한 해결책은 웹뷰 캐싱을 사용하는 것으로 충분합니다. @TIGERB의 CDN 솔루션과 결합할 수도 있습니다.