① 勇客互联网络推广公司移动端网站优化是怎么做的
随着移动互联网的发展,移动网站优化也是势在必行,非做不可之事了。
1、虽然移动端的手机网站并不是pc站的简单过来的移动版本,但是大部分pc端页面的优化技巧在这里仍然是使用的,最多就是需要考虑一下手机用户和特殊用户的体验需求,所以是没有必要把移动页面优化当成一个和pc页面优化完全不一样的技术。
2、消费群体定位问题要考虑清楚,页面内容是否能正常访问,因此绚丽的flash和js等建议还是慎用为好,一是考虑用户体验度问题,而是尽量减少搜索引擎的抓取工作,让蜘蛛尽可能多的爬行和收录页面,同时要注意不要用robots文件禁止搜索引擎蜘蛛抓取CSS、JS和图片等外部文件,不然蜘蛛会难以判断页面布局甚至无法正常访问内容。
3、网站设计要尽可能简洁,页面设计要尽可能方便手机用户点击浏览,比如字体是否清晰可读、是否有上下左右滑动页面、广告太多让人厌烦、title不要太长、功能是否简单易操作、页面数和页面大小是否控制到最低、移动网站设计是否够精简、网站打开速度是否够快等等。
4、域名要尽可能简短易记,大部分手机版网站的域名是pc端网站的二级域名,这样与传统网站保持一致更重视用户信赖确实很好,不过如果是遇到了专门的手机网站的话,最好是起一个简短易记的域名。
5、网络手机爬虫的UA并不是spider-mobile,这一点不要误会了,另外在robots的设置上最好不要有任何限制方便所有搜索引擎抓取。
6、做移动SEO时要更关注地名+主查询词这种搜索,因为手机携带方便,兼具移动性,在上面搜索吃喝玩乐的用户数量很大。
7、在做页面优化细节的时候要注意对于手机网站的首页或者频道首页网页代码中的keywords、description最好加上与PC端有所区别的meta标签和关键词,在每个页面的关键词及描述像传统pc端网站一样,做好针对性填写工作。这样对搜索结果的展现以及优化工作都有很大的帮助;要注意减少死链的产生,在没有内容的情况下最好用状态码制定,如果内容死链希望重定向到首页可以通过302跳转,不要使用javascript 跳转。
② 如何做好移动通信网的网络优化
移动通信近年来发展速度惊人,在市场需求的驱动下,移动网络不断扩容,网络的规划也一再随之调整。建设周期短,发展速度快,前后工期的重叠进行,网络的建设无论在规划阶段以及后续的扩建工程中,均存在着一些质量问题,造成整个通信网络的各种资源不能得到合理的应用,资源大大浪费,还使得通话质量下降,服务水平低,网络运行效率低。
为使得网络资源能够合理配置和应用,移动通信网络的网络优化工作已经成为移动通信运营商提高服务水平,保障通信质量的重要工作内容。
网络优化工作,就是对整个网络的资源根据需求和发展的情况进行调配,达到合理的运用。同时,对于网络运行中存在的诸如覆盖不好、话音质量差、掉话、网络拥塞、切换成功率低、未开通某些新功能等问题时,也需要对网络进行优化。因此,网络优化是一个长期的过程,贯穿于网络发展的全过程。 网络优化,不仅对于当前的GSM900MHz网络而言,对于还在发展的GSM1800MHz和CDMA800MH也是同样重要的。
2 网络优化的内容
网络优化既然是对网络资源的重新调配,那么,有哪些资源是可以应用的呢?
2.1 网络资源
频率资源:无线通信的频率资源是宝贵的,移动通信的频率资源尤其珍贵,频率资源包括可用的频段(900MHz/1800MHz,对运营商而言)、可用的方式(固定、跳频)、覆盖的区域、单站的频率覆盖方式、相邻小区的频率复用方式等。
地域资源:移动通信网要完成网络覆盖,覆盖的地域非常重要,合理的分布站址无疑可以取得更好的覆盖效果,即使是经济不发达地区,有时也要有相应的投入。
业务资源:移动通信网是随业务的发展而设立的,只有满足不断变化的业务需求,才能充分利用好网络资源,网络中的移动业务,在不同的区域分布是不均匀,需求也不一样。网络的设置要充分吸收各种业务量,尤其是对于新增业务如短信息、信息广播、数据业务等都需要合理的安排。
③ 手机移动数据网速慢怎么解决
手机移动数据网速慢的解决方法有:更改虚拿网络设置、清理缓存和数据、使用VPN服务。
1、更改网络设置:有时候,手机移动数据网速慢是因为网络设置不当导致的。我们可以尝试更改网络设置来提高网速。这些设置盯雀可能因手机品牌不同而有所不同,但总的来说,通过更改网络设置,可以大大提高手机移动数据网速。
手机移动数据的原理解析
移动网络是手机移动数据的基础。移动网络可以分为2G、3G、4G、5G等多种类型。在移动网络中,手机通过基站与网络连接,并通过网络获取数据。不同的移动网络速度不同,其中5G网络速度最快,可以实现更快的数据传输。
互联网是手机移动数据的最终目的地。手机通过移动网络连接互联网,并通过互联网获取数据。在互联网中,数据传输可以通过HTTP、FTP、SMTP等协议来实现。互联网的快速发展和普及,为手机移动数据的发展提供了更加广阔的空间。
④ 手机移动数据网络慢,怎么办
首先,你的手机卡是4G的嘛,如果不是可以升级到4G。
然后,查看你的手机是不是比较卡,如果是可以适当清理手机内存。手机卡、慢可能是因为下载缓存的东西太答猜薯多了,内存不足,运行不过来,你可以使用腾讯手机管家清理加速,它有专门的一键优化功能,按一下就给你的手机清理加速。不过你放心它只兆并会清理你系统中不必要的数据释放空间,不会删除你的重要信息。还有记得平时用过手机都用腾讯手机管家关闭一下后台程序,这样也可以很有效的给你的手机加速。
最后,检查所在地的清者信号情况,如果本地信号不强可以换个地方再试。
⑤ 移动网络优化实践
网络优化对于App产品的用户体验至关重要,与公司的运营和营收息息相关。这里列举两个公开的数据:
“ 页面加载超过3秒,57%的用户会离开。 ”
“ Amazon页面加载延长1秒,一年就会减少16亿美金营收。 ”
首先是网络不可用的问题。主要由以下几种原因导致:
GFW的拦截,原因你懂的。
DNS的劫持,端口的意外封禁等。
偏远地区网络基础设施比较差。
其次是网络加载时间长。原因包括: * 移动设备出于省电的目的,发出网络请求前需要先预热通信芯片。 * 网络请求需要跨网络运营商,物理路径长。 * HTTP请求是基于Socket设计的,请丛嫌求发起之前会经历三次握手,断开时又会进行四次挥手渗辩手。
最后是HTTP协议的数据安全问题。原因有: * HTTP协议的数据容易被抓包。Post包体数据经过加密能够避免泄露,但协议中的URL和header部分还是会暴露给抓包软件。HTTPS也面临相似的问题。 * 运营商数据恶意篡改严重。如下图中,App的网页中就被运营商插入了广告。
3
面对上述网络问题,我们首先在HTTP短连请求中进行了一些优化尝试。
1. 告别 DNS,直接使用 IP 地址
如果是首次发送基于 HTTP 协议的网路服务,第一件事就是进行 DNS 域名解析,我们统计过 DNS 解析成功率只有 98%,剩下 2% 是解析失败或者运营商 DNS 劫持(Local DNS 返回了非源站 IP 地址),同时 DNS 解析在 3G 下耗时 200 毫秒左右,4G 也有 100 毫秒左右,延迟明显。我们基于 TCP 连接,直接跳过了 DNS 解析阶段,使用内置 IP 列表的方式进行网络连接。
App 内置了一组 Server IP 列表,同时每个 IP 具备权重。每次建立新连接,会选择权重最高的 IP 地址进行连接。App 启动时,IP 列表的所有权重是相同的,此时会启动一组 Ping 的操作,根据 Ping 值的延迟时间来计算 IP 的权重,这么做的原理是 Ping 值越小的 IP 地址,连接后的网络传输延迟也应该相对更小。业界也有使用 HTTP DNS 方式来解决 DNS 劫持问题,同时返回最合适用户网络的 Server IP。然而 HTTP DNS 的开发和部署需要不小的开发成本,我们目前没有使用。
内置 Server IP 列表也会被更新,每次 App 启动后会有个 Mobile Config 服务(支持 TCP 和 HTTP 两种网络类型服务)更新 Server IP 列表,同时支持不同产品线的 Server IP 列表更新。因此,传统 DNS 解析能够解决多 IDC 导流的功能也可以通过此方法解决。
2. Socket 连接优化,减少连灶则接时间
和 HTTP 协议中的 Keepalive 特性一样,最直接减少网络服务时间的优化手段就是保持长连接。每次 TCP 三次握手连接需要耗费客户端和服务端各一个 RTT(Round trip time)时间才能完成,就意味着 100-300 毫秒的延迟;TCP 协议自身应对网络拥塞的 Slow Start 机制也会影响新连接的传输性能。
App 使用了长连接池的方式来使用长连接,长连接池中维护了多个保持和服务端的 TCP 连接,每次网络服务发起后会从长连接池中获取一个空闲长连接,完成网络服务后再将该 TCP 连接放回长连接池。我们没有在单个 TCP 连接上实现 Pipeline 和 Multiplexing 机制,而是采用最简单的 FIFO 机制,原因有二:
简化 Mobile Gateway 的服务处理逻辑,减少开发成本;
在服务端同时返回多个响应时,如果某个响应报文非常大,使用多个长连接方式可以加快接收服务响应报文速度。
如果发起网络服务时长连接池中的 TCP 连接都正在被占用,或者 TCP 长连接的网络服务失败,则会发起一个 TCP 短连接实现网络服务。这里长连接和短连接的区别仅仅是服务完成后是否直接关闭这个 TCP 连接。
附: Pipeline 和 Multiplexing 是有区别的,如 HTTP/1.1 支持 Pipeline,客户端能否同时发送多个请求,但是服务端返回响应时也要按照请求的发送次序来返回响应;SPDY 和 HTTP/2 协议支持 Multiplexing,即支持响应报文的乱序返回,发送请求和接收响应互不干扰,因此避免了 HTTP/1.1 Pipeline 也没能完全解决的 Head of line blocking 问题。
3. 弱网和网络抖动优化
App 引入了网络质量参数,通过网络类型和端到端 Ping 值进行计算,根据不同的网络质量改变网络服务策略:
调整长连接池个数:例如在 2G/2.5G Egde 网络下,会减少长连接池个数为 1(运营商会限制单个目标 IP 的 TCP 连接个数);WIFI 网络下可以增加长连接池个数等机制。
动态调整 TCP connection、write、read 的超时时间。
网络类型切换时,例如 WIFI 和移动网络、4G/3G 切换至 2G 时,客户端 IP 地址会发生变化,已经连接上的 TCP Socket 注定已经失效(每个 Socket 对应一个四元组:源 IP、源 Port、目标 IP、目标 Port),此时会自动关闭所有空闲长连接,现有网络服务也会根据状态自动重试。
4. 数据格式优化,减少数据传输量和序列化时间
传输数据量越小,在相同 TCP 连接上的传输时间越短。携程 App 曾经使用自行设计的一套数据格式,后来和 Google ProtocolBuffer 对比后发现,特定数据类型下数据包大小会降低 20-30%,序列化和反序列化时间可以降低 10-20%,因此目前核心服务都在逐步迁移到到 ProtocolBuffer 格式。另外 Facebook 曾分享过他们使用 FlatBuffer 数据格式 提高性能的实践,我们分析后不太适合携程的业务场景因而没有使用。
5. 引入重试机制,提升网络服务成功率
受 TCP 协议重传机制来保证可靠传输的机制启发,我们在应用层面也引入了重试机制来提高网络服务成功率。我们发现 90% 以上的的网络服务失败都是由于网络连接失败,此时再次重试是有机会连接成功并完成服务的;同时我们发现前面提到的网络服务生命周期处于 1 建立连接、序列化网络请求报文、发送网络请求这三个阶段失败时,都是可以自动重试的,因为我们可以确信请求还没有达到服务端进行处理,不会产生幂等性问题(如果存在幂等性问题,会出现重复订单等情况)。当网络服务需要重试时,会使用短连接进行补偿,而不再使用长连接。
实现了上述机制后,携程 App 网络服务成功率由原先的 95.3%+ 提升为如今的 99.5%+(这里的服务成功率是指端到端服务成功率,即客户端采集的服务成功数除以请求总量计算的,并且不区分当前网络状况),效果显着。
6. 其他网络服务机制 & Tricks
携程 App 也实现了其他一些网络服务机制方便业务开发,如网络服务优先级机制,高优先级服务优先使用长连接,低优先级服务默认使用短连接;网络服务依赖机制,根据依赖关系自动发起或取消网络服务,例如主服务失败时,子服务自动取消。
开发过程中我们也发现一些移动平台上的 TCP Socket 开发 tricks:
iOS 平台上的原生 Socket 接口创建连接并不会激活移动网络,这里原生 Socket 接口是指 POSIX Socket 接口,必须使用 CFSocket 或者再上层的网络接口尝试网络连接时才会激活网络。因此携程 App 启动时会优先激活注册一些第三方 SDK 以及发送 HTTP 请求来激活移动网络。
合理设置 Socket 的几个参数:SO_KEEPALIVE 参数确保 TCP 连接保持(注:此 KeepAlive 是 TCP 中的属性,和 HTTP 的 KeepAlive 是两个场景概念),SO_NOSIGPIPE 参数关闭 SIGPIPE 事件,TCP_NODELAY 参数关闭 TCP Nagle 算法的影响。
由于 iOS 要求支持 IPv6-Only 网络,因此使用原生 Socket 必须支持 IPv6。
如果使用 select 来处理 nonblocking IO 操作,确保正确处理不同的返回值和超时参数。
保持 TCP 长连接可用性的心跳机制:对于非 IM 类应用而言,心跳机制的作用不大,因为用户会不断触发请求去使用 TCP 连接,尤其在携程业务场景下,通过数据统计发现使用心跳与否对服务耗时和成功率影响极小,因此目前已经关闭心跳机制。原先的心跳机制是 TCP 长连接池中的空闲 TCP 连接每 60 秒发送一个心跳包到 Gateway,Gateway 返回一个心跳响应包,从而让双方确认 TCP 连接有效。
Hybrid 网络服务优化
携程 App 中有相当比例的业务是使用 Hybrid 技术实现的,运行在 WebView 环境中,其中的所有网络服务(HTTP 请求)都是由系统控制的,我们无法掌控,也就无法进行优化,其端到端服务成功率也仅有 97% 左右(注:这里指页面中业务逻辑发送的网络服务请求,而非静态资源请求)。
我们采用了名为‘TCP Tunnel for Hybrid’的技术方案来优化 Hybrid 网络服务,和传统 HTTP 加速产品的方法不同,我们没有采用拦截 HTTP 请求再转发的方式,而是在携程 Hybrid 框架中的网络服务层进行自动切换。
如图所示,该技术方案的流程如下:
如果 App 支持 TCP Tunnel for Hybrid,Hybrid 业务在发网络服务时,会通过 Hybrid 接口转发至 App Native 层的 TCP 网络通讯层,该模块会封装这个 HTTP 请求,作为 TCP 网络服务的 Payload 转发到 TCP Gateway;
TCP Gateway 会根据服务号判断出是 Hybrid 转发服务,解包后将 Payload 直接转发至 HTTP Gateway,此 HTTP 请求对 HTTP Gateway 是透明的,HTTP Gateway 无需区分是 App 直接发来的还是 TCP Gateway 转发来的 HTTP 请求;
后端业务服务处理完成后,HTTP 响应会经 HTTP Gateway 返回给 TCP Gateway,TCP Gateway 将此 HTTP 响应作为 Payload 返回给 App 的 TCP 网络通讯层;
TCP 网络通讯层会再将该 Payload 反序列化后返回给 Hybrid 框架,最终异步回调给 Hybrid 业务调用方。整个过程对于 Hybrid 业务调用方也是透明的,它并不知道 TCP Tunnel 的存在。
采用该技术方案后,携程 App 中 Hybrid 业务的网络服务成功率提升至 99% 以上,平均耗时下降了 30%。
海外网络服务优化
携程目前没有部署海外 IDC,海外用户在使用 App 时需要访问位于国内的 IDC,服务平均耗时明显高于国内用户。我们采用了名为‘TCP Bypass for Oversea’的技术方案来优化海外网络服务性能,主要是使用了 Akamai 的海外专属网络通道,同时在携程国内 IDC 部署了局端设备,使用专用加速通道的方式来提升海外用户体验。
海外用户启动 App 后先通过 Akamai 定制域名获取 Server IP,所有网络服务优先走 Akamai 通道;如果 Akamai 通道的网络服务失败并且重试机制生效时,会改走传统 Internet 通道进行重试。相比只用传统 Internet 通道,在保持网络服务成功率不变的情况下,使用 Akamai 通道 Bypass 技术后平均服务耗时下降了 33%。
其他网络协议探讨
过去两年我们的网络服务优化工作都是基于 TCP 协议实现的,基本达到了优化目标。不过这两年来新的应用层网络协议 SPDY 和 HTTP/2 逐步迈入主流,基于 UDP 的 QUIC 协议看起来也非常有趣,值得跟进调研。
SPDY & HTTP/2
SPDY 是 Google 基于 TCP 开发的网络应用层协议,目前已经停止开发,转向支持基于 SPDY 成果设计的 HTTP/2 协议,HTTP/2 协议的核心改进其实就是针对 HTTP/1.x 中影响延迟性能的痛点进行优化:
Header 压缩:压缩冗余的 HTTP 请求和响应 Header。
支持 Multiplexing:支持一个 TCP 连接上同时实现多个请求和响应。
保持长连接(比 HTTP/1.x 更彻底):减少网络连接时间。
支持推送:可以由服务端主动推送数据到客户端。
官方性能测试结果显示使用 SPDY 或者 HTTP/2 的页面加载时间减少 30% 左右,不过这是针对网页的测试结果,对于 App 中的网络服务,具体优化效果我们还在进行内部测试,不过其优化手段看和目前我们使用 TCP 协议的优化手段类似,因此性能优化效果可能不会很显着。
QUIC
QUIC 是 Google 基于 UDP 开发的应用层协议,UDP 协议无需连接,不存在重传机制,因此应用层需要保证服务的可靠性。目前国内腾讯有针对弱网络尝试过 QUIC 协议,我们也在进行测试,最终是否会采用还需要看测试的结果。
综述
技术只是手段,最终还是要反映在业务效果上。我们已经实现除静态资源等需要访问 CDN 的网络请求外,其他 App 网络服务使用统一的 TCP 通道,从而具备更好的性能调优和业务监控能力。携程目前基于 TCP 协议的各种 App 网络服务优化,也是各种技术方案的平衡,虽然目前 HTTP/2 等新协议逐步成熟,但是 TCP 协议自身的灵活性支持有针对性的性能优化,还是具备其特别的优势,希望我们的实践总结能对国内无线技术从业者有一些借鉴价值。