解决方案
服务端:方式比较多,可以从架构上说(这个内容太多了,什么负载均衡了,什么缓存了,什么主从了),但是今天主要讨论语言层面。
我们可以使用逐步返回内容的方式,输送数据给浏览器,如我们可以使用php的flush,把整个head部分,半个body加一部分div返回给浏览器,进行渲染,然后把其他部分逐步输送到浏览器。
我们可以在服务端使用多线程或多进程的方式并发去进行数据处理。如php常见的
广州网站建设,网站建设,广州网页设计,广州网站设计
- do {
- $mrc = curl_multi_exec($mh, $active);
- }while($mrc==CURLM_CALL_MULTI_PERFORM);
- while ($active && $mrc == CURLM_OK){
- if (curl_multi_select($mh) != -1){
- do {
- $mrc = curl_multi_exec($mh,$active);
- }while($mrc==CURLM_CALL_MULTI_PERFORM);
- }
- }
或者
- <?php
- while (count($sockets)) {
- $read = $write = $sockets;
- $n = stream_select($read,$write, $e, $timeout);
- if ($n > 0) {
- foreach ($read as $r) {
- $id = array_search($r, $sockets);
- $data = fread($r, 8192);
- if (strlen($data) == 0) {
- fclose($r);
- unset ($sockets[$id]);
- }else {
- $retdata[$id] .= $data;
- }
- }
- $retdata[$id] = preg_replace('/^HTTP(.*?)\r\n\r\n/is',<em>, $retdata[$id]);</em>
- foreach ($write as $w) {
- if (!is_resource($w))continue;
- $id = array_search($w, $sockets);
- fwrite($w, "GET /" . $url[$id] . "HTTP/1.0\r\nHost: " . $hosts[$id] ."\r\n\r\n");
- $status[$id] = 1;
- }
- }else {
- break;
- }
- }
JavaScript:
1、把脚本进行压缩(移除不必要的字符,注释以及空行)。
2、对部分js文件进行合并,以减少http的请求个数,以减少服务器端的压力——但是要量力而行,因为如果你的js文件很大,下载很慢的话,很多功能都不能正常进行,我们可以按照业务进行合并。
3、使用外部js文件。因为现在很多浏览器都有缓存,明显会减少http请求数。
4、将脚本放在页面底部。先让用户看到内容,然后再加载js,这样用户会感觉页面加载速度很快。
CSS:
1、合并多个css文件,以减少http的请求个数,以减少服务器端的压力。
广州网站建设,网站建设,广州网页设计,广州网站设计
2、使用外部css文件。主要原因是浏览器缓存,以减少http请求。
3、放在页面顶部(head标签处),防止出现“无样式内容的闪烁”。
原文链接:http://www.cnblogs.com/baochuan/archive/2012/05/29/2524694.html