جعل صفحة كاملة وليس "تدريجيا" (باستخدام الدعامات 2 / البلاط)

StackOverflow https://stackoverflow.com/questions/438954

  •  22-07-2019
  •  | 
  •  

سؤال

هل هناك طريقة للحصول على الدعامات 2 (باستخدام البلاط) لبناء صفحة كاملة قبل إرساله إلى المتصفح؟ أنا لا أريد الصفحة التي سيتم بناء "تدريجيا" في المتصفح جزء واحد في وقت واحد.

والمشكلة الرئيسية أحاول حل هو أن إنترنت إكسبلورر 7 ومضات / يومض الصفحة ولو بعض التغييرات المحتوى (فايرفوكس يفعل ذلك أكثر من ذلك بكثير على نحو سلس).

وحتى أنه إذا كان لدي صفحة مع:

وHEADER

وبعض المحتويات

وFOOTER

والمنطقة "بعض محتوى" يتغير فقط بين تحميل الصفحة، الجزء FOOTER لا يزال يومض خلفية بيضاء قبل ملئه مع لون خلفية تذييل. I ديللينكوفر أنه ربما عن طريق الحصول على الدعامات لإرسال صفحة كاملة فإنه تحميل سريع بما فيه الكفاية للقضاء على "تطرف". الآن FOOTER يأتي من الخادم في وقت لاحق قليلا من الأجزاء المعروضة عليها، وذلك ومضات (في إنترنت إكسبلورر، فايرفوكس يعرض الصفحة بشكل سلس).

ملاحظة: هذا هو مطلب مهم للموقع، واستخدام اياكس لتحميل المحتوى الأوسط هو خارج (كما هي الإطارات أو غيرها "الخارقة"). تم بناء الموقع باستخدام CSS و لا تخطيط الجدول، وربما أنا سوف تضطر إلى استخدام تخطيط الجدول للحصول على العمل ...

وحول استخدام البلاط المعلمة دافق: حاولت ذلك، وأنها لا تعمل وأنا في حاجة. أنا في حاجة الى المعلمة تدفق للصفحة بأكملها. لقد حاولت العادي JSP الصفحة التوجيه "autoFlush = كاذبة" لكنها لم تنجح. أنا وضعت هذا التوجيه على صفحتي قالب الرئيسية (وليس في البلاط).

وهنا مثال من القالب الرئيسي، والذي يستخدم رأس والجسد وتذييل القوالب. مع Thread.sleep () أضفت المشكلة من السهل على الفور. تذييل يجعل بعد 2 ثانية من بقية الصفحة.

  <body>
  <div id="container">
  <t:insertAttribute name="header" flush="false" />

  <div id="content"><t:insertAttribute name="body" flush="false"/></div>

  <div class="clear"></div>
  <% Thread.sleep(2000); %>
  <t:insertAttribute name="footer" flush="false" />
  </div>
  </body>

وUPDATE

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

ولكن على ما يبدو هناك أي وسيلة لتكوين IE لبدء تقديم بعد بعض التأخير (مثل فايرفوكس لديه تأخير شكلي بعض 100MS)؟

وحاولت اعتراض TilesResult لكن يتم تقييم طريقة تشغيل doExecute قبل المحتوى كله على ما يبدو، لذلك فقد خرجت من طريقة بالفعل قبل أن يتم تقييم التخطيط الاستراتيجي المشترك (بلدي Thread.sleep () اختبار). وكنت أتساءل كيف يمكن تقديم استجابة كاملة لانتاج سلسلة وبعد ذلك في كل مرة إلى المتصفح.

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

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

وUPDATE 2

وبدأ هذا يزعجني لذلك فعلت بعض التحقيق. وإذا كان لي صفحة التخطيط الاستراتيجي المشترك العادي (لا البلاط) أعمال التخزين المؤقت (مع السمة عازلة)، بحيث إذا كان لي Thread.sleep () هناك صفحة كاملة المقدمة بعد ثانيتين إذا كان حجم الصفحة أقل من حجم المخزن المؤقت. ولكن إذا كنت البلاط في الصفحة (كما في المثال أعلاه) لم أتمكن من الحصول على الصفحة لتقديم في الوقت نفسه (أنا حتى شملت توجيه الصفحة في كل ما عندي من البلاط قوالب / "المكونات"، أي مساعدة). حتى البلاط ربما الإحمرار الاستجابة مكان ما؟

وعلاوة على ذلك، كانت "البلاط إشكالية" جسدي جزء، والتي تحتوي على الدعامات: شكل علامة. I استبداله العادية شكل العلامة وعملت كما أردت ...

وUPDATE 3

حسنا، يبدو أن لا أحد يعرف ما يدور بداخل البلاط أو العلامات الدعامات ... لا مشكلة كبيرة لأن هذا هو الحال ومتطلبات محددة للغاية. عملت حولها باستخدام اباتشي كما proxt أمام التطبيق، واستخدام خيارات تكوين الوكيل اباتشي لتحديد منطقة عازلة كبيرة. سوف نحتفل بهذا كما أجاب.

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

المحلول

ويمكن استخدام "مطاردة" السمة على مكونات البلاط؟

<tiles:insertAttribute name="body" flush="false"/>

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

<%@ page language="java" buffer="500kb" autoFlush="false" %>

نصائح أخرى

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

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

و(* - أو العميل الخاص بك / رئيسه، وإذا كان هذا هو الذي قد حان حتى مع هذا "مطلب مهم" أن موقع الويب الخاص بك بطريقة أو بأخرى تعمل بشكل مختلف على كل صفحة أخرى على الويب)

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