سؤال

أنا أعمل على تطبيق ويب يتم فيه استخدام الصور التي تم إنشاؤها ديناميكيًا لعرض المعلومات.يتم إرسال هذه البيانات حاليًا إلى الصور باستخدام سلسلة استعلام GET ولكن مع الصور والبيانات الأكثر تعقيدًا، أشعر بالقلق من مواجهة مشكلات مع الحد الأقصى لعدد أحرف عنوان URL.

يمكنني ببساطة تمرير معرف السجل إلى الصورة وإجراء هذا الاستعلام عن قاعدة البيانات ولكن من الواضح أن هذا سيؤدي إلى زيادة الطلب على الخادم.هل هناك طريقة يمكنني من خلالها إضافة صورة تم استردادها باستخدام POST إلى مستند HTML؟

هل كانت مفيدة؟

المحلول

في النهاية، وأعتقد أن quering سوف قاعدة البيانات ربما يكون أسرع. للحصول على سلسلة صغيرة (ويقول ما يصل إلى 2000 حرفا) من قاعدة بيانات سريعة جدا، وربما أسرع من وجود المستخدم نشر ذلك في كل وقت، وخاصة إذا كان هناك أكثر من 1 في الصفحة.

والخيار الأفضل سيكون خلق صورة مرة واحدة وتخزين أنه إذا كان لا يتغير. عند طلب الصورة مرة أخرى، تحقق لمعرفة ما اذا كان مؤقتا ومجرد استخدام طلب & ReadFile () لإرساله إلى المتصفح. أحب لتخزين الصورة مؤقتا خارج الجذر وثيقة حتى انها ليست الوصول إليها من قبل الآخرين، ولكن هذا قد لا يكون عاملا في ما تفعلونه (كلا التخزين المؤقت والخصوصية).

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

نصائح أخرى

ليس بسهولة - لا يتضمن HTML أي دعم جوهري لإرسال طلبات POST متعددة وعرض النتائج كموارد مضمنة، كما هو الحال مع <img /> <script /> والعلامات الأخرى التي تحدد سمة SRC.

حتى حلول AJAX قد لا تساعدك هنا.من السهل تغيير سمة SRC لصورة ما، ولكن كل ما سيفعله هو جعل المتصفح يحصل على الصورة الجديدة (من ذاكرة التخزين المؤقت أو الخادم، اعتمادًا على التكوين الخاص بك).في الواقع تغيير محتوى الصورة إلى استجابة ثنائية من HTTP POST أكثر تعقيدًا - على الرغم من أنه يمكنك النظر في ترميز base64 لدفق الاستجابة واستخدام البيانات:مخطط URL لعرض الصورة الناتجة في صفحتك.

يمكنك دائمًا الحصول على نموذج به "انقر لعرض الصورة" كزر إرسال، بالطبع - تقوم بإرسال النموذج، ويستجيب الخادم ببيانات الصورة/jpeg، ويعرضها متصفحك كصورة مستقلة.أنا متأكد تمامًا من أنك لا تستطيع القيام بذلك بشكل مضمّن.

وخيار واحد يمكن أن يكون لتخزين هذه البيانات في متغير الدورة. يجب عليك القيام ببعض الاختبارات لمعرفة الطريقة التي الخادم الخاص بك (ق) على التعامل معها بشكل أفضل

لتوسيع على تعليق داريل هين و:

<اقتباس فقرة>   <اقتباس فقرة>     

ومع هذا، أود أن أوصى إزالته من هذه الدورة بعد الانتهاء معها. اذا كان هناك في كل وقت، وPHP تحميله على كل مكالمة الصفحة، وليس مجرد صورة "صفحة". - داريل هين

  

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

وشيء من هذا القبيل

وطلب صفحة

<? //index.php
    $_SESSION['imagedata']['header'] = array('name'=>'Simon','backgroundcolor'=>'red');
    echo '<img src="image.php?image=header">';
    // more stuff
    echo '<img src="image.php?image=header">'; // same image
?>    

والنصي صورة

<?  //image.php
    switch($_GET['image']){
        case 'header':
            if(isSet($_SESSION['imagedata']['header'])){
                // create image using $_SESSION['imagedata']['header'] data
                // create cached image
                unset($_SESSION['imagedata']['header']);
            else if(cache_file_exists()){
                // display cached file
            }else{
                // no data, use plan B
            }
        break;
    }
?>

إذا يمكن تحديد صورة من قبل معرف مجرد استخدام ذلك. وإذا افترضنا أن نفس معرف ينبغي أن تنتج نفس الصورة في كل مرة مجرد استخدام بعض وكيل لخدمة الصور باستخدام معيار دعم HTTP التخزين المؤقت.

في بعض الحالات وتحت بعض القيود هل يمكن استخدام الإطار من حيث تريد صورتك لapear ونشر مع سمة الهدف مشيرا إلى أن IFRAME.

وذلك في الصفحة الرئيسية لديها إطار iframe. الصفحة الرئيسية لديها شكل وظائف إطار وأنا وخادم إرجاع الصورة التي يتم عرضها في إطار iframe.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top