يرجى ملاحظة أن هذا المشروع قد تم إهماله . العرض الديناميكي ليس نهجًا موصى به وهناك طرق أفضل لتقديمها على الويب.
لن يتم الحفاظ على Rendertron بنشاط في هذه المرحلة.
Rendertron هو حل عرض كروم مقطوع الرأس مصمم لتقديم وسلسلة صفحات الويب على الطيران.
تم تصميم RenderTron لتمكين تطبيق الويب التدريجي الخاص بك (PWA) لخدمة المحتوى الصحيح لأي روبوت لا يقدم أو ينفذ JavaScript. يعمل Rendertron كخادم HTTP المستقل. طلب RenderTron صفحات باستخدام Chrome مقطوعة الرأس ، والكشف التلقائي عندما يكمل PWA الخاص بك التحميل وتجريبية الاستجابة مرة أخرى إلى الطلب الأصلي. لاستخدام RenderTron ، يقوم التطبيق بتكوين البرامج الوسيطة لتحديد ما إذا كان سيتم الوكيل طلبًا إلى RenderTron. Rendertron متوافق مع جميع التقنيات الجانبية للعميل ، بما في ذلك مكونات الويب.
بمجرد تشغيل الخدمة وتشغيلها ، ستحتاج إلى تنفيذ طبقة التقديم التفاضلية. هذا يتحقق من وكيل المستخدم لتحديد ما إذا كان المطلوب.
هذه قائمة من الوسيطة المتاحة للاستخدام مع خدمة Rendertron:
Rendertron متوافق أيضًا مع prerender.io الوسيطة. ملاحظة: تختلف قوائم وكيل المستخدم هناك.
GET /render/<url>
ستقوم نقطة render بتقديم صفحتك وتسلسل صفحتك. يتم تحديد الخيارات كمعلمات استعلام:
mobile إلى false . تمكين بالمرور ?mobile لطلب إصدار الهاتف المحمول من موقعك.refreshCache : Pass refreshCache=true لتجاهل نتائج العرض المحاكاة المخزنة مؤقتًا وعلاج الطلب كما لو أنه لم يتم تخزينه مؤقتًا بعد. يتم استخدام نتيجة العرض الجديدة لاستبدال النتيجة السابقة. GET /screenshot/<url>
POST /screenshot/<url>
يمكن استخدام نقطة نهاية screenshot للتحقق من تقديم صفحتك بشكل صحيح.
تدعم كلتا النقاطين معلمات الاستعلام التالية:
width الافتراضي إلى 1000 - يحدد عرض منفذ العرض.height إلى 1000 - يحدد ارتفاع المنفذ.mobile إلى false . تمكين بالمرور ?mobile لطلب إصدار الهاتف المحمول من موقعك.timezoneId - يحدد تقديم للمنطقة الزمنية. تتوفر خيارات إضافية كسلسلة JSON في POST . انظر وثائق Puppeteer للخيارات المتاحة. لا يمكنك تحديد type (الافتراضيات إلى jpeg ) encoding المعلمات (الافتراضية إلى binary ).
GET /invalidate/<url>
ستقوم نقطة النهاية بإلغاء إزالة ذاكرة التخزين invalidate المستند إلى <url> من ذاكرة التخزين المؤقت التي تم تكوينها (في الذاكرة أو نظام الملفات أو مخزن بيانات السحابة).
عند تعيين معلمات الاستعلام كجزء من عنوان URL الخاص بك ، تأكد من ترميزها بشكل صحيح. في JS ، سيكون هذا encodeURIComponent(myURLWithParams) . على سبيل المثال لتحديد page=home :
https://render-tron.appspot.com/render/http://my.domain/%3Fpage%3Dhome
تحاول الخدمة اكتشاف متى يتم تحميل الصفحة من خلال النظر إلى حدث تحميل الصفحة ، مما يضمن عدم وجود طلبات شبكة معلقة وأن الصفحة لديها متسع من الوقت لتقديمه.
هناك حد صعب يبلغ 10 ثوانٍ لتقديمه. تأكد من عدم ضرب هذه الميزانية من خلال ضمان تقديم طلبك جيدًا قبل انتهاء صلاحية الميزانية.
يدعم Chrome Headless مكونات الويب ولكن من الصعب إجراء Shadow DOM بشكل فعال. على هذا النحو ، مطلوب Shady Dom (شيم خفيفة الوزن لـ Shadow DOM) لمكونات الويب.
إذا كنت تستخدم مكونات الويب V0 (تم إهمالها) ، فستحتاج إلى تمكين DOM Shady من تقديمها بشكل صحيح. في البوليمر 1.x ، الذي يستخدم مكونات الويب V0 ، يتم تمكين DOM DOM بشكل افتراضي. إذا كنت تستخدم Shadow DOM ، فتجاوز هذا عن طريق تعيين معلمة الاستعلام dom=shady عند توجيه الطلبات إلى خدمة Rendertron.
إذا كنت تستخدم مكونات الويب V1 و webcomponents-lite.js أو webcomponents-loader.js ، قم بتعيين معلمة الاستعلام wc-inject-shadydom=true عند توجيه الطلبات إلى خدمة RenderTron. ستجبر خدمة العارض هذه على التحميل وتمكين البوليفيات اللازمة.
يتم الحفاظ على رموز الحالة من عنوان URL المطلوب الأولي. إذا كان هذا هو 200 أو 304 ، فيمكنك تعيين حالة HTTP التي يتم إرجاعها بواسطة خدمة العرض عن طريق إضافة علامة التعريف.
< meta name =" render:status_code " content =" 404 " /> لتثبيت Rendertron وتشغيله محليًا ، قم أولاً بتثبيت RenderTron:
npm install -g rendertronمع تثبيت Chrome على جهازك ، قم بتشغيل Rendertron CLI:
rendertronاستنساخ وتثبيت التبعيات:
git clone https://github.com/GoogleChrome/rendertron.git
cd rendertron
npm install
npm run buildمع تثبيت مثيل محلي من Chrome ، يمكنك بدء الخادم محليًا:
npm run start gcloud app deploy app.yaml --project <your-project-id>
لم يعد Rendertron يتضمن ملف Docker. بدلاً من ذلك ، راجع وثائق Puppeteer حول كيفية نشر Chrome Headless Chrome في Docker.
عند نشر الخدمة ، قم بتعيين متغيرات التكوين من خلال تضمين config.json في الجذر. خيارات التكوين المتاحة:
timeout Default 10000 - قم بتعيين المهلة المستخدمة لتقديم الصفحة الهدف.port الافتراضي 3000 - اضبط المنفذ لاستخدامه في تشغيل خدمة RenderTron والاستماع إليها. ملاحظة إذا تم تعيين Process.env.port ، فسيتم استخدامه بدلاً من ذلك.host الافتراضي 0.0.0.0 - اضبط اسم المضيف لاستخدامه في تشغيل خدمة Rendertron والاستماع إليها. لاحظ إذا تم تعيين Process.env.host ، فسيتم استخدامه بدلاً من ذلك.width الافتراضي 1000 - اضبط العرض (الدقة) لاستخدامه لتقديم الصفحة.height الافتراضي 1000 - اضبط الارتفاع (الدقة) لاستخدامه لتقديم الصفحة.reqHeaders الافتراضي {} - قم بتعيين رؤوس HTTP الإضافية المراد إرسالها إلى الصفحة المستهدفة مع كل طلب.cache Default null - قم بتعيين إلى datastore لتمكين التخزين المؤقت على Google Cloud باستخدام مخزن البيانات فقط ، استخدم فقط إذا تم نشره على Google Cloud ، أو memory لتمكين التخزين المؤقت في الذاكرة أو filesystem لتمكين التخزين المؤقت للقرصcacheConfig - صفيف كائن لتحديد خيارات التخزين المؤقتrenderOnly - تقييد نقطة النهاية على طلبات الخدمة فقط لبعض المجالات. المحددة كمجموعة من السلاسل. على سبيل المثال. ['http://render.only.this.domain'] . هذه تطابق بادئة صارمة ، لذلك تأكد من تحديد البروتوكولات الدقيقة التي سيتم استخدامها (على سبيل المثال. HTTP ، HTTPS).closeBrowser Default false - true يجبر المتصفح على إغلاق وإعادة فتح بين كل صفحة ، قد تحتاج بعض المواقع إلى ذلك لمنع عناوين URL التي تمر الأول الذي قام بإعداد الاستجابات الفارغة.restrictedUrlPattern الافتراضية null - قم بتعيين المقيد المقيد لتقييد الطلبات المطابقة نمط regex المعطى. cacheDurationMinutes الافتراضي 1440 - تعيين وقت انتهاء الصلاحية في Minues ، الافتراضات إلى 24 ساعة. ضبط على -1 لتعطيل انتهاء صلاحية ذاكرة التخزين المؤقتcacheMaxEntries افتراضي 100 - اضبط الحد الأقصى لعدد الإدخالات المخزنة في طريقة ذاكرة التخزين المؤقت المحددة. تعيين إلى -1 للسماح بالتخزين المؤقت غير المحدود. إذا كان استخدام طريقة التخزين المؤقت لخزائن البيانات ، فقد يؤدي تعيين هذه القيمة أكثر من 1000 إلى أداء متدهور حيث أن الاستعلام لتحديد حجم ذاكرة التخزين المؤقت قد يكون بطيئًا للغاية. إذا كنت ترغب في السماح لذاكرة التخزين المؤقت الأكبر في datastore فكر في تعيين هذا إلى -1 وإدارة حجم مخزن البيانات الخاص بك باستخدام طريقة مثل إدخالات الحذف هذه بكميات كبيرةsnapshotDir افتراضي <your os's default tmp dir>/renderton - نظام الملفات فقط من نظام التشغيل مثال على ملف تكوين يحدد ذاكرة التخزين المؤقت للذاكرة ، مع انتهاء صلاحية ساعتين ، و 50 إدخالات كحد أقصى
{
"cache" : "memory" ,
"cacheConfig" : {
"cacheDurationMinutes" : 120 ,
"cacheMaxEntries" : 50
}
}إذا كنت تواجه مشكلات في الحصول على كروم مقطوعة الرأس لتشغيلها في بيئتك ، راجع دليل استكشاف الأخطاء وإصلاحها للعربة.