php - قوة تحميل/تحديث عند الضغط على زر العودة




mysql codeigniter (9)

وسأحاول قصارى جهدي لشرح هذا.

لدي تطبيق التي تظهر 50 + المشاريع في صفحة رأيي. يمكن للمستخدم النقر على المشروع الفردي والانتقال إلى صفحة التحديث لتحديث معلومات المشروع. كل شيء يعمل بشكل جيد إلا أنه بعد الانتهاء من المستخدم تحديث معلومات المشروع الفردية وضرب زر "العودة" على المتصفح إلى view page السابقة. معلومات المشروع القديم (قبل التحديث) لا يزال هناك. المستخدم لديه لتصل التحديث لرؤية المعلومات المحدثة. أنها ليست سيئة، ولكن أود أن توفر تجربة أفضل للمستخدم. أي فكرة لإصلاح هذا؟ شكرا جزيلا.


حسنا، يمكنك إما توفير زر رجوع مضمن في صفحة التحديث التي سترسلها إليها (مثل الرابط <a href="<?= $_SERVER['HTTP_REFERRER']; ?>">BACK</a> أو وضع بعض النص البرمجي على الصفحة التي ستجبرها على سحب البيانات في كل مرة يتم فيها ضرب الصفحة، سواء كانت انطباعا جديدا، أو إذا تم استخدام زر الرجوع.


يمكنك إرسال رؤوس هتب في صفحة الملف الشخصي التي تخبر المتصفح بأن الصفحة لا يمكن تخزينها مؤقتا. وهذا يعني أن المتصفح سوف تحتاج إلى طلب الصفحة من الخادم في كل مرة واحدة يتم الوصول إليه - وهذا يعني أنه يظهر دائما ما يصل إلى أحدث المعلومات.

يجب إرسال الرؤوس قبل أي محتوى آخر، لذا ضع الحق التالي في أعلى صفحة العرض.

header("Cache-Control: no-cache, must-revalidate");

هنا هو الحل الذي إيف المستخدمة في بعض صفحاتي. أضف هذا إلى الصفحات التي يتم إجراء التغييرات فيها.

window.onbeforeunload = function() {
     window.name = "reloader"; 
        }

وهذا يؤدي عند ترك تلك الصفحات. يمكنك أيضا تشغيله إذا كانت هناك تغييرات تم إجراؤها. بحيث لن يتم إعادة تحميل الصفحة دون الحاجة إلى إعادة التحميل. ثم على الصفحات التي تريد الحصول على إعادة تحميلها بعد استخدام المتصفح "مرة أخرى".

if (window.name == "reloader")
      {
        window.name = "no";
        reloadPage(); 
      }

وهذا سيؤدي إلى تحميل على الصفحة التي تحتاج إلى إعادة تحميل إلى ... نأمل هذا يساعد :) يا راجع للشغل هذا هو في جس.


"فب-كاش" يمكن أن يكون مزعج حقا. هنا هو طريقة جافا سكريبت بسيطة حوله:

window.onpageshow = function(evt) {
    // If persisted then it is in the page cache, force a reload of the page.
    if (evt.persisted) {
        document.body.style.display = "none";
        location.reload();
    }
};

اختبارها في سفاري 6 و IE10.


جعل مربع خفية واستخدام أدناه رمز (كوفيسكريبت)

window.location.reload()  if $("#refreshCheck")[0].checked
  $("#refreshCheck")[0].checked = true

 if (window.name == "reloader") {
            window.name = "";
            location.reload();
        }

window.onbeforeunload = function() {
                window.name = "reloader"; 
            }

أضف هاتين الوظيفتين في كل صفحة


هذا هو الحل الذي استخدمته:

<?php
session_start();
if (!$_SESSION['reloaded']) {$_SESSION['reloaded'] = time();}
else if ($_SESSION['reloaded'] && $_SESSION['reloaded'] == time()) { ?> 
<script> 
location.reload(); 
</script> 
<?php } ?>

لحسن الحظ، ليس لدينا لدعم المتصفحات أدناه IE10، لذلك إذا كنت على استعداد أو امتيازات كافية لدعم المتصفحات التي هي قادرة HTML5 فقط، يجب أن تعمل ما يلي:

/*
 * The following is intentional, to force Firefox to run 
 * this JS snippet after a history invoked back/forward navigation.
 */
window.onunload = function(){};    

function formatTime(t) {
    return t.getHours() + ':' + t.getMinutes() + ':' + t.getSeconds();
}

if (window.history.state != null && window.history.state.hasOwnProperty('historic')) {
    if (window.history.state.historic == true) {
        document.body.style.display = 'none';
        console.log('I was here before at ' + formatTime(window.history.state.last_visit));
        window.history.replaceState({historic: false}, '');
        window.location.reload();
    } else {
        console.log('I was forced to reload, but WELCOME BACK!');
        window.history.replaceState({
            historic  : true,
            last_visit: new Date()
        }, '');
    }
} else {
    console.log('This is my first visit to ' + window.location.pathname);
    window.history.replaceState({
        historic  : true,
        last_visit: new Date()
    }, '');
}

حسنا، هنا رمز دون تعليقات و فلب:

window.onunload = function(){};

if (window.history.state != null && window.history.state.hasOwnProperty('historic')) {
    if (window.history.state.historic == true) {
        document.body.style.display = 'none';
        window.history.replaceState({historic: false}, '');
        window.location.reload();
    } else {
        window.history.replaceState({historic  : true}, '');
    }
} else {
    window.history.replaceState({historic  : true}, '');
}

عصا أن قبل علامة إغلاق الجسم الخاص بك، وسيكون لديك حل نظيفة إلى حد ما.

هذا سوف تعمل مع أي مزيج من العودة / إلى الأمام يتم النقر عليها، وحظة المستخدم الأراضي على صفحة جديدة، لن يحدث إعادة تحميل القسري.

قراءة المزيد حول كائن السجل على مدن:

مدن - كائن التاريخ

مدن - تنظيف محفوظات المتصفح


بعد أيام من البحث على الشبكة لإيجاد حل، وأخيرا الرقم بها، إضافة بعد:

<script>
 window.onbeforeunload = function(){window.location.reload();}
</script>

وهذا سيعمل مثل سحر سوف أشكر لي

سيؤدي هذا الرمز إلى إعادة تحميل الصفحة عند زيارتها.