بهترین مکان برای ذخیره تنظیمات سایت
سلام به همگی
فرض کنید در حال توسعه وب سایتی هستیم که به مدیر سایت تقریبا امکان تسلط به تمامی قسمت های وب سایت رو میدهد. مثلا فرض کنید که در قسمت top bar سایت یک عدد ایمیل و یک عدد آدرس قرار است نشان داده شود. همچنین در قسمت footer هم قرار است آدرس، ایمیل و دو سه تا شماره تلفن نمایش بدهیم. بهتر است این قبیل اطلاعات را کجا و چگونه ذخیره کنیم؟ (آیا این کار امری متداول است؟). به خصوص وقتی که بحث کارایی مطرح است و واکشی این اطلاعات نباید تاثیر زیادی در زمان بارگزاری صفحه داشته باشد؟ در جستجویی که در اینترنت کردم، بسیاری فایل Web.config را برای این کار معرفی کرده بودند. نظر شما چیست؟
اکثر وب سایت های تجاری صفحه ای به نام «درباره ما» دارند. به نظر شما بهتر است این صفحه به صورت استاتیک طراحی شود یا پویا (مدیر امکان ویرایش متن آن را داشته باشد)؟ در صورت طراحی به صورت پویا، متن این صفحه بهتر است کجا ذخیره شود؟ مثلا درون پوشه App_Data (در mvc) یک فایل به نام AboutUs.txt ایجاد کرده و متن را درون آن ذخیره کنیم یا راه دیگری پیشنهاد میکنید؟
2 پاسخ
سلام رامین جان، اول یه نکته بگم، شما هر چقدر سایتی که داری طراحی میکنی رو داینامیک تر کنی بعداً خودت راحت تری، هر جایی که فکر می کنی کاربر بخواد تغییر بده رو باید امکانش رو فراهم کنی.
در مورد ذخیره تنظیمات وب سایت، من خودم یه جدول به صورت زیر تعریف می کنم:
Id:int identity primary key Key: nvarchar(200) Value: nvarchar(max)
بعد برای هر کدوم از تنظیمات یک کلید به همراه مقدارش رو ذخیره می کنم:
copyrtight-text => value footer-email => value
از اونجا که تنظیمات سایت ها معمولاً خیلی زیاد نیستند، می تونی داخل یک متغیر static مقادیر رو ذخیره کنی و تغییرات اون متغیر static رو به روز رسانی کنی. فقط یادت نره که حتماً بحث Synchronization رو زمان کار با فیلد های static مد نظر داشته باشی.
من هم توی یه جدول مشابه جدولی که دوستمون گفت ذخیره میکنم. فقط 1 فیلد اضافه تر داره. این فیلد اضافه تر به اسم مثلا Load هست.
یه سری تنظیمات که زیاد واکشی میشن و حجم زیادی هم ندارن (یعنی تکست بلند نیستند) رو توی یه کلاس singleton ذخیره میکنم. اینطوری فقط 1 بار موقع لود اول فراخونی میشن و دیگه نیاز به لود ندارند. و اگه زمانی این تنظیمات توسط مدیر تغییر کنه، یه بار این کلاس رو به اصطلاح clear instance میکنم که دوباره لود بشه.
حالا اون فیلد Load اینجا به کار میاد، اون تنظیماتی که میخوام برن توی کلاس سینگلتون رو با این فیلد مشخص میکنم.
کار دیگه ای هم که میشه کرد، اینه که برای بعضی از تنظیمات، اکشنی که اون ها رو لود میکنه رو کش کنیم.
-- توجه کنید که پیاده سازی سینگلتون چند روش مختلف داره. لینکی که دادم فقط برای آشنایی ابتداییه.