Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 优化:使用ajax加载内容_Javascript_Jquery_Ajax_Optimization - Fatal编程技术网

Javascript 优化:使用ajax加载内容

Javascript 优化:使用ajax加载内容,javascript,jquery,ajax,optimization,Javascript,Jquery,Ajax,Optimization,我想听听你关于使用ajax优化内容加载的想法。接下来,我将提出一些方法,并对每种方法提出我自己的想法 直接加载html-这允许轻松加载内容,无需进一步计算。更适合于不受用户操作影响的内容或包含应定期更新的部分的内容 从服务器获取json对象-似乎是将页面内容包含在json对象中的好方法。通过将当前值与新对象进行比较,只允许修改某些部分 按部分(块)加载--似乎是最难更新的方式。您必须知道更改了哪个部分以及在哪里加载它(应该更改/更新对节点的特定dom访问)。此外,从计算的角度来看,这似乎比获得

我想听听你关于使用ajax优化内容加载的想法。接下来,我将提出一些方法,并对每种方法提出我自己的想法

  • 直接加载html-这允许轻松加载内容,无需进一步计算。更适合于不受用户操作影响的内容或包含应定期更新的部分的内容
  • 从服务器获取json对象-似乎是将页面内容包含在json对象中的好方法。通过将当前值与新对象进行比较,只允许修改某些部分
  • 按部分(块)加载--似乎是最难更新的方式。您必须知道更改了哪个部分以及在哪里加载它(应该更改/更新对节点的特定dom访问)。此外,从计算的角度来看,这似乎比获得一个json对象并“手动”创建标记或拥有一个我们将数据加载到其中的模板更容易

那么,您如何看待每种方法?请随意提出一种新方法

我在企业软件领域工作(只是作为一名顾问,而不是开发人员),我多次看到第三种方法被广泛使用,因为它在页面的动态性方面更加灵活

除此之外,从只更新某些部分的角度来看,前两种方法似乎并不令人信服:即使在第二种情况下(使用JSON),您也必须比较两个页面片段,我认为这是一种幼稚的方法(恐怕不太容易实现)

但是你的问题缺少一些重要的信息,比如你用来生成页面的内容。在第一种情况下,这不太重要,因为您只是生成一个字符串(其中包含页面源代码),但在第三种情况下,如果您的AJAX加载代码干扰了您正在使用的HTML模板引擎,它可能会变得一团糟


我希望这对你有所帮助,如果你需要,请在问题中添加更多信息

我将内容分为三部分

  • HTML,而不是db缓存和ajax
  • db缓存,而不是ajax(内容更改周期是周期性的)
  • 数据库缓存和ajax(高数据库操作时间)
  • 如果页面速度慢,分析它并更改为2或3。 在使用ajax内容加载之前,必须分析页面访问速度和数据库负载

    对于db缓存,我传递函数和参数

    $c1 = db_cache("main_top_naver_cache", 300, "naver_popular('naver_popular', 4)");
    db_cache - php function(my own)
    main_top_naver_cahce : cache name
    300 : cache duration
    naver('naver_popular',4) : php function and arguments
    
    这段代码是我的ajax内容加载方法。很简单

    <>我考虑Ajax加载方法很多年了,上个月我得到了非常简单的代码。 试试我的ajax内容加载代码

    <div id='main_b'>
    // codes for ajax content loading...
    // enter this code at the end of program.
    // your home page is boosted.
    <?
    function remove_nr($str) {
    $reg_e = array('/\n/', '/\r/', '/\"/', "/<\/script>/i"); 
    $reg_p = array(' ', ' ', '\\"', "<\/SCRIPT>"); 
    return preg_replace($reg_e, $reg_p, $str);
    }
    ?>
    <script type="text/javascript">
    $("#main_b").html( " <? echo remove_nr(db_cache("main_top_naver_cache", 300, "naver_popular('naver_popular', 4)"))?> " );
    </script>
    
    
    //ajax内容加载代码。。。
    //在程序末尾输入此代码。
    //你的主页被提升了。
    $(“#main_b”).html(”
    
    function db_cache($c_name, $seconds=300, $c_code) {
    
        global $g4;
    
        $result = sql_fetch(" select c_name, c_text, c_datetime from $g4[cache_table] where c_name = '$c_name' ");
        if (!$result) {
            // 시간을 offset 해서 입력 (-1을 해줘야 처음 call에 캐쉬를 만듭니다)
            $new_time = date("Y-m-d H:i:s", $g4['server_time'] - $seconds - 1);
            $result['c_datetime'] = $new_time;
            sql_query(" insert into $g4[cache_table] set c_name='$c_name', c_datetime='$new_time' ");
        }
    
        $sec_diff = $g4['server_time'] - strtotime($result['c_datetime']);
        if ($sec_diff > $seconds) {
    
            // $c_code () 안에 내용만 살림 
            $pattern = "/[()]/";
            $tmp_c_code = preg_split($pattern, $c_code);
    
            // 수행할 함수의 이름
            $func_name = $tmp_c_code[0];
    
            // 수행할 함수의 인자
            $tmp_array = explode(",", $tmp_c_code[1]);
    
            if ($func_name == "include_once" || $func_name == "include") {
    
                ob_start();
                include($tmp_array[0]);
                $c_text = ob_get_contents();
                ob_end_clean();
    
            } else {
    
            // 수행할 함수의 인자를 담아둘 변수
            $func_args = array();
    
            for($i=0;$i < count($tmp_array); $i++) {
                // 기본 trim은 여백 등을 없앤다. $charlist = " \t\n\r\0\x0B"
                $tmp_args = trim($tmp_array[$i]);
                // 추가 trim으로 인자를 넘길 때 쓰는 '를 없앤다
                $tmp_args = trim($tmp_args, "'");
                // 추가 trim으로 인자를 넘길 때 쓰는 "를 없앤다
                $func_args[$i] = trim($tmp_args, '"');
            }
            // 새로운 캐쉬값을 만들고
            $c_text = call_user_func_array($func_name, $func_args);
            }
    
            // db에 넣기전에 slashes들을 앞에 싹 붙여 주시고
            $c_text1 = addslashes($c_text);
    
            // 새로운 캐쉬값을 업데이트 하고
            sql_query(" update $g4[cache_table] set c_text = '$c_text1', c_datetime='$g4[time_ymdhis]' where c_name = '$c_name' ");
    
            // 새로운 캐쉬값을 return (slashes가 없는거를 return 해야합니다)
            return $c_text;
    
        } else {
    
            // 캐쉬한 데이터를 그대로 return
            return $result['c_text'];
    
        }
    }