最近在开发中遇到了很多问题,比如ajax请求,大量使用ajax提交数据会发现经常出现重复性数据,也就是说用户提交了两次,这个问题的根本在于手机端网速过慢,导致用户以为没有点击上,就会在点击一次,所以这个时候我们必须要加上“锁屏”,或者提示用户数据正在提交当中,由于以前没有移动端开发的经验所以倒置出现了很多重复的数据,这个问题应该算比较严重的 一个问题。
另外一个问题就是还网速问题,比如最近开发的微信订餐模块,在首次加载的时候有很多产品分类、产品,所有的产品都是通过ajax来获取的,这样有存在了一个问题,当让我们也是为了追求极致的用户体验,比如用户点击西餐分的时候的时候我们去请求服务器来获取西餐中的产品,点击中餐获取中餐中的数据,当下次在点击中餐的时候呢?还是请求服务器吗?这样是不合理的,用户满意必要再次去浪费流量了,所以我们就需要在用户端做一个缓存,当用户下次请求的时候直接走本地缓存不在请求服务器了。这样就实现了一次加载不用多次加载了。
这样虽然加了一个缓存层但是还是不能搞满足需求,现在某个神奇的国度的网速还是很慢的,3G普及率还不是很高,4G也才刚出来只是一个噱头而已,4G的手机也不多,所以我们除了做缓存还是不够的,我们需要做一些其他工作来让操作体验度更高。
以订餐来举例:
1、产品列表
2、产品分类
用户首次进来我们将第一个分类中的产品都加载显示出来(PS:直接后端语言打印,不要用ajax请求,ajax还会发送一次http请求的还不如直接加载出来,当页面出来的时候就直接显示了),这个时候我们在代码中协商window.onload = function(){} 用js来监测所有资源是否已经加载完成了,如果已经加载完成,那么这个时候我们需要发送下一分类中的所有产品了并将他缓存,这个时候对用户来说他是察觉不到的,其实我们已经在请求数据了,一直将我们所有需要的数据加载进来。这样用户在想看下一个分类中的产品的时候就不需要在等待了。这样提前加载可能有会说,这样如果用户不需要看你其他分类的产品你这不是浪费吗?难道你想用户在等待吗?我不想看到,我需要给用户一个更加流程的操作。这些我们浪费的流量我们可以从其他地方进行补回的,比如:压缩页面 源码,减少http请求,不实用jquery而是去封装自己的原生态的js(这个就根据你自己的业务需求吧),总之能省的就都省了,我们们的目的是将pc做成app的操作体验