سؤال

وأنا باستخدام الأحجار الكريمة rmagick لتوليد الصور الديناميكية من وحدة تحكم. وحدة تحكم يأخذ معرف على أنه المعلمة، لا نظرة حتى على نموذج، يكتب النص فوق صورة القائمة، وإخراج ذلك.

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

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

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

المحلول

وأفضل الممارسات لتخزين الصور ولدت والسماح للخادم لخدمة لهم.

استخدم خادم ويب مثل أباتشي أو إنجن إكس أمام التطبيق القضبان الخاصة بك، وتأكد من كتابة الصورة إلى الموقع حيث خادم الويب يمكن أن تكون عليه. حتى إذا كان لديك القضبان الطريق يقيم ل/dynamic_images/3.png (الذي يدعو dynamic_images_controller العمل show مع معرف = 3 = وشكل بابوا نيو غينيا)، والكتابة تلك الصورة إلى public/dynamic_images/3.png واستخدام send_file في وحدة تحكم لإرسالها.

وفي المرة القادمة يتم طلب هذا الملف (/dynamic_images/3.png)، وخادم سيعمل بكل سرور (مؤقتا) وسوف التطبيق القضبان لم تحصل على ضرب.

لاحتياجات المتقدمة، مثل إعادة توليد-الصور، وتنظيف كود جهاز تحكم، لديها نظرة على مشبك جوهرة .

نصائح أخرى

مجرد فكرة (لم يحاكم): لماذا لا تخزين الصور (وخاصة تلك التي يتم إنشاؤها بشكل ديناميكي) مع memache

وRails.cache.write ( "MY_IMAGE"، صورة)

ويجب وضع الصور المخزنة مؤقتا في مثل هذا الدليل من حيث سيتم يخدمها خادم الويب. كنت لا تريد استخدام send_data لهذا - وهذا بطيئة جدا. أيضا، سوف ربما كنت ترغب في تجاهل هذا الدليل في VCS الخاص بك.

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