Java (Tomcat): كيفية تكوين نطاق فرعي Cookieless لتقديم محتوى ثابت

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

  •  04-10-2019
  •  | 
  •  

سؤال

واحدة من النصيحة التي قدمها كل من Google و Yahoo! لتسريع صفحات الويب هو تكوين نطاق فرعي Cookieless إلى المحتوى الثابت للخادم.

كيف يمكنك تكوين "نطاق فرعي Cookieless" باستخدام Tomcat في الوضع المستقل (هذا السؤال لا يتعلق بكيفية استخدام Apache لتقديم محتوى ثابت في طريق طبخ ، ولكن حول كيفية القيام بذلك في وضع Tomcat-Randalone)؟

لاحظ أنني لا أهتم بالمرشحات الداعمة If-Modified-Since ولا تهتم بالمرشحات التي تدعم gzipping: المحتوى الثابت الذي أقدمه قابلاً للتخطيط إلى الأبد (أو سيتغير اسمه) وهو عبارة عن بيانات مضغوطة بالفعل (وبالتالي فإن GZIP لن يبطئ النقل إلا).

هل أحتاج إلى اثنين من Tomcat WebApps؟ (واحد "ملف تعريف الارتباط" وواحد "كوكيليس")

هل أحتاج إلى اثنين من servlets؟ (اعتبارا من الآن لدي مرسل واحد فقط/وحدة تحكم servlet).

لماذا يتم استدعاء رابط "منتظم" ، على سبيل المثال ، صورة ثابتة بطريقة ملف تعريف الارتباط عندما تكون على نفس المجال مثل WebApp الرئيسي ثم يتم استدعاؤها بطريقة "أقل ملف تعريف الارتباط" عندما تكون على نطاق فرعي. ؟

لا أفهم بالضبط ما يجري: هل هو المتصفح الذي يقرر إلحاق أو عدم ملفات تعريف الارتباط إلى الاستعلام؟ إذا كان الأمر كذلك ، فلماذا لا تقوم بإلحاق ملفات تعريف الارتباط إلى استعلام ثابت على نطاق فرعي "كوكيليس".

أي مثال على ما يجري وراء المشهد هو موضع ترحيب كبير :)

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

المحلول

تحتاج فقط إلى إعداد مجال آخر. يمكن أن يشير إلى نفس webapps. فقط تأكد من عدم إسقاط ملفات تعريف الارتباط على هذا المجال الجديد.

على سبيل المثال ، أنت الموقع الرئيسي

  www.example.com

ويمكنك الحصول على مجال آخر

  static.example.com 

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

تحرير: على افتراض أن المحتوى الثابت الخاص بك يتم تقديمه بواسطة Servlet الافتراضي في Tomcat ، لا يتعين عليك فعل أي شيء. لا تسقط ملفات تعريف الارتباط لك ، لذا يجب أن يكون مجالك الجديد خاليًا من ملفات تعريف الارتباط.

إذا كان عليك معالجة المحتوى الثابت في نفس servlet ، فيمكنك فعل شيء كهذا ،

   if (!request.getServerName().equals("static.example.com")) {
       // Drop cookie
   }

يفترض هذا المثال أنك لا تسقط ملف تعريف الارتباط في مجال الجذر الخاص بك (.example.com). إذا قمت بذلك ، فيجب عليك الحصول على مجال آخر ، مثل examplecdn.com.

نصائح أخرى

لقد نشرت عن هذا هنا: إعادة كتابة عنوان URL/النطاق الفرعي (HTACCESS)

أعتقد أنه قد يكون لديك للخلف ، (أو ربما أفعل) للتوضيح ، إذا كان تنفيذ نطاق فرعي أقل من ملف تعريف الارتباط ولديك عنوان URL الأساسي لـ WWW. على الأقل في هذه الحالة ، يتم تعيين ملفات تعريف الارتباط على شبكة الاتصالات العالمية ، على سبيل المثال: مجموعة ملفات تعريف الارتباط الرئيسية هي Google Analytics ، لذلك عند إعداد البرنامج النصي على موقعي ، يبدو الأمر كذلك:

`var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'analytics-acc-#],

['_setDomainName', '[www.valpocreative.com2'],

['_trackPageview']);

`

يمكنك أن ترى هنا أنني قمت بتعيين نطاقي الرئيسي على شبكة الاتصالات العالمية ، وتصحيحني إذا كنت مخطئًا في حالتي ، فسأحتاج إلى إعادة توجيه www إلى نطاق Sublain غير www وليس العكس. هذا هو أيضًا إعداد CNAME الذي تم إجراؤه على cpanel الخاص بي (cname = "CDN" يشير إلى www.domain.com)

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