2

私は3ページ、すなわちmain_page.phpajx_page1.phpajx_page2.php

そして、$.postリクエストを使用しmain_page.phpてに送信しましたajx_page1.php。この後、にリクエストをajx_page1.php送信します。そして、理解を深めるために下に画像を追加しました...$.postajx_page2.php

問題

リクエストはローカルホストでうまく機能しており、これをライブサーバーで実行すると、ほぼ4〜6秒かかります。そして、これは最も恐ろしいタイムラプスです。

下の画像に示すように、ページ内の ajax リクエストを子ページに投稿する他の方法はありますか。

またajx_page2.php、データベースからデータを取得します..そして、他のページはajx-childページからデータを取得しています

CSSもjQueryも動かない..

コード

Main_page.php

$.post("ajx_page1.php", {parameters}, function(return_data){
    $("#container").html(return_data);
});

ajx_page1.php

$.post("ajx_page1.php", {parameters}, function(return_data){
    $("body").html(return_data);

});

ajx_page2.php

    `some condition and logical data from database`

ここに画像の説明を入力


更新されたファイルの詳細

Main_page.php

<div id="content_region" class="center">

    <div class="a_job_pre_action clear">
    <ul class="a_jj_ul">
        <li class="j_act_1 j_act" ><a href="" >JOB DETAIL</a> </li>
        <li class="j_act_2 j_act" ><a href="" >STAFF SHORTLISTED</a> </li>
        <li class="j_act_3 j_act" ><a href=""  >CLIENT SHORTLISTED</a> </li>
        <li class="j_act_4 j_act" ><a href="">CONFIRM FOR INTERVIEW</a> </li>

        <?php if ($_SESSION['user_type'] == "admin" or $_SESSION['user_type'] == "manager"): ?>
            <li class="j_act_5 j_act" ><a href="" >INVOICES</a> </li>
        <?php endif; ?>

        <li class="j_act_6 j_act" ><a href="" >CONTACT CLIENT</a> </li>
    </ul> <!-- a_jj_ul -->
    </div> <!-- a_job_pre_action -->

    <div class="clear a_job_action_result">



    </div>


<script>

    $(document).ready(function(){

    $(".j_act_1 a").click(function(){


        $.post("ajx_page1.php", {job_id : j_job_id}, function(return_data32){
            $(".a_job_action_result").html(return_data32);
        });
    });




    });

</script>

ajx_page1.php

<select class="a_sel" name="sel_staff">
    <?php get_all_staff_options(); ?>
</select>

// and some other data too.


<script>

    $(document).ready(function(){

    $(".ajx_select_status").change(function(){
       var j_job_status = $(this).val();
        var j_job_code = "<?php echo $curr_job_data['job_code']; ?>";


        $.post("ajx_page.php", {job_status : j_job_status, job_code : j_job_code}, function(return_data32){
            alert(return_data32);
        });


    });



    });

</script>

ajx_page2.php

full pure php code here
4

3 に答える 3

3

良い。ページの実行が遅い場合。以下の4つのことを行っています。

(私はクロムを使用し、 F12 を押します)

  • 3 つの php ページ、特にデータベース呼び出しの周りに、タイマーの開始と停止のプリントアウトを追加します。
  • 「監査」をクリックして 実行します
  • 「タイムライン」をクリックして 実行します
  • 「プロファイル」をクリックして 実行します

ページで何が遅いかを正確に教えてくれます。通常、疑わしいのはデータベースの呼び出しです。時間の出力をチェックして、データベースのパフォーマンスを確認してください。

---オプション--- 追加の ajax 呼び出しのために常に css を引き込んでいるようです。速度が戻るまで、CSS をメイン ページに引き込みます。

于 2012-10-06T19:19:59.473 に答える
0

ここにアーキテクチャの問題が見えます

ajaxリクエストを実行する単純な.jsスタンドアロンファイルを作成しただけでなく、パラメータを確認してくださいsuccess: function() {}$.post()

問題を解決する方法は、スローダウンの原因となる奇妙なソリューションによってphpコードもオーバーロードされていると思います。

また、心に留めておいてください-javascriptはクライアント側であり、この方法でACLを作成しようとする場合は、daoを解決してください。:)

于 2012-10-08T02:57:14.867 に答える
0

データを操作するためのより効率的な方法を見つけることが賢明です。私が最初に考えたのは、ajax_page2 から ajax ページ 1 にコードを含めるか、ajax_page_1 の php コードを組み合わせてページ自体に ajax 呼び出しを行うことで、3 番目の php スクリプトの使用を避けることでした。

許可されていない、またはキャッシュできない場合は、プロセスを高速化するために結果をキャッシュしてみてください。その方法の 1 つは、memcached またはカスタム スクリプトを使用することです: http://www.profilepicture.co.ukなど/caching-api-responses-php/

于 2012-10-08T03:30:29.493 に答える