En iyi uygulama PHP Form Eylem

3 Cevap php

Merhaba ben yeni bir script (sıfırdan değil CMS) inşa ettik ve bellek kullanımını azaltmada çok iş yaptık ve sefer (HTML vb önbelleğe) görüntülenecek sayfa sürer

Ama emin değilim bir şey var. Bir yorum bölümünde bir eşyanın basit bir örneği ele alalım.

Sonra yazı sayfaya geri yönlendirir başka bir sayfaya yorum formu mesajlar insanların yenileme tıklayarak ve bilgileri göndermeyi sorun olmaz eğer.

Ben bunu bu şekilde yaparsanız Ancak, benim komut dosyası iki kat daha fazla bellek olarak iki kez kullanmak kadar yük var ve ben hala sadece bir kez sayfasını görüntüleyen ediyorum iken iki kez uzun sürer.

İşte benim yük günlüğünde bir örnek. Makalenin ilk yük açıklama yayınlanmıştır sonra önbellekten, ikinci sayfasını oluşturur olduğunu.


Example 1

0.018667 bellek 650.856 bayt kullanarak 0 sorguları - domain.com/article/1/my_article.html

0.075825 bellek 1325723 bayt kullanarak 9 sorguları - domain.com/article/1/my_article/newcomment.html

0.029449 bellek 650.856 bayt kullanarak 0 sorguları - domain.com/article/1/my_article.html

Example 2

0.023526 bellek 650.856 bayt kullanarak 0 sorguları - domain.com/article/1/my_article.html

0.060032 bellek 1659096 bayt kullanarak 9 sorguları - domain.com/article/1/my_article.html


Açıkçası zaman bu yüzden gerçekten karşılaştırmak olamaz dalgalanır. Ama ben daha fazla bellek kullanmak ve yüklemek için daha uzun sürer ilk yöntem ile görebilirsiniz.

AMA ilk yöntem yenileme sorunu kaçıyor.

Herkes en iyi yaklaşım için veya ekstra yük önlemek için alternatif yollar için herhangi bir öneriniz var mı (admittadely minimal ama ben hala onu önlemek istiyorum) ayrıca yenileme sorunu kaçınarak iken?

3 Cevap

Optimizasyon çabaları her zaman övgüye, ancak bu özel durumda ben birkaç sorguları tasarruf sıfır fayda görebilirsiniz, ve bir kaç saniye için bazı RAM,. Kesinlikle Örnek 1 (ya da her neyse bir programlama, bakım ve kullanıcı deneyimi açısından en iyi) ile gitmek.

Ben her zaman öznel sunucu kurulumu ve böylece yargılama tüm çalışma süreleri ve bellek tüketimi hakkında bilmiyorum, ama oldukça iyi yapıyor gibi görünüyor. Ortalama script örneği (en azından backend, önyüz ölçülen değil) 6 ve 12 MB arasında ağırlığa Wordpress bak. Optimizasyonu hakkında too fazla dert etmeyin.

Senin sorunun daha gerçek daha hayal düşünün. Tekerlekler araç toplam ağırlığı bir miktar ağırlık ilave. Bu tekerlekleri kaldırmak için akıllıca olacaktır? Öyle düşünmüyorum. Göre the standard Eğer yönlendirme yapmak gerek. Bunu bu şekilde yaparsanız Yani, başka seçeneğimiz yok.

Diğer olası çözüm SO yaptığı gibi, bir yorum göndermek için AJAX kullanmaktır. Bu size o değerli tekar tasarruf olur :)

Use AJAX! Check the love letters form in the footer here: http://www.flatmaterooms.co.uk

HTML

<form id="feedback" method="post" action="#">
    <fieldset>
        <h3>Have comments? Feedback? <span id="feedback_status"></span></h3>
    <textarea name="feedback_body" id="feedback_body" class="placeholder" rows="10" cols="50">Send us your comment...</textarea>

    <div id="feedback_submit">
        <button type="submit">Send &rarr;</button>

        <div id="feedback_optional">
            <label for="feedback_email">Your email address (optional)</label>
            <input type="text" name="feedback_email" id="feedback_email" />
        </div>

        <input type="hidden" name="feedback_url" id="feedback_url" value="<?=$_SERVER['REQUEST_URI']?>" />
    </div>
    </fieldset>
</form>

JQuery

$(document).ready(function(){   function feedback() {
    var a = $("#feedback_body").val();
    if(a) {
        $("#feedback_status").show();
        $("#feedback_status").html("Sending...");
        $("#feedback_submit button").attr("disabled", "disabled").addClass("disabled").removeClass("default").blur();
        $.ajax( {
            type : "POST", url : "/feedback.php", data : {
                feedback_body  : a,
                feedback_email : $("#feedback_email").val(),
                feedback_url   : $("#feedback_url").val(),
                feedback_save  : true
            }
            , error : function(b, d, c) {
               $("#feedback_status").html("Whoops!")}
            , success : function(b, c) {
               $("#feedback_status").html("Success! Thanks.")}
            }
    )}
}

$(function() {
    var b = $("#feedback_body");
    var a = b.val();
    b.click(function() {
        if($(this).val() == a) {
           $(this).removeClass("placeholder").val("");
           $("#feedback_submit").show()}
        }
    );
    $("form#feedback").submit(function() {
       feedback(); return false}
    )}
); 
});