عنوان:

‫یک نکته کوچک راجع به تعریف Mime Type ها روی سرور


نویسنده: ناصر فرجی
تاریخ: ۱۳۹۱/۱۲/۲۲ ۰:۲۵
آدرس: www.dntips.ir
همان طور که می‌دانید در css امکان استفاده از فونت‌های فارسی مهیاست. برای این کار کافیست با دستور زیر فونت را در فایل css خود تعریف کنیم و در صورتیکه فونت روی سیستم کاربر موجود نباشد ابتدا فونت روی سیستم دانلود شده و سپس نمایش داده می‌شود. استفاده از سه پسوند مختلف نیز برای مرورگرهای مختلف در نظر گرفته شده است تا خروجی در تمامی مرورگر‌ها به درستی نمایش داده شود.
@font-face {
  src: url('Font/BYekan.eot?#') format('eot'),  /* IE6–8 */
       url('Font/BYekan.woff') format('woff'),  /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
       url('Font/BYekan.ttf') format('truetype');  /* Saf3—5, Chrome4+, FF3.5, Opera 10+ */
}
در یک پروژه با مشکل عجیبی روبرو شدم . پروژه روی لوکال به خوبی کار می‌کرد اما بعد از آپلود روی سرور فونت‌ها بسیار دیر لود می‌شد. یعنی ابتدا تمامی اجزای صفحه لود شده و با تاخیری چند ثانیه ای فونت نمایش داده می‌شد. مرورگری که در حال کار روی آن برای تست پروژه بودم باید از پسوند woff مربوط به آن فونت استفاده می‌کرد.
بعد از تست پروژه با فایرباگ متوجه شدم که متاسفانه اصلا فونت روی سیستم دانلود نشده و خروجی 404 که مربوط به File Not Found است برگشت داده می‌شود. سعی کردم با دادن آدرس فونت در برنامه download manager فونت را دانلود کنم. اما باز هم فونت دانلود نمی‌شد! (یعنی فایل روی سرور موجود بود ولی هیچ دسترسی به آن ممکن نبود) برای دو پسوند دیگر یعنی eot  و ttf هم این کار را تست کردم و متوجه شدم روی این دو پسوند مشکل خاصی وجود ندارد. با تماس با پشتیبانی هاست متوجه شدم اصلا این پسوند در Mime Type های سرور تعریف نشده است . بنابراین به صورت دستی Mime Type مورد نظر را روی سرور تعریف کردم و مشکل حل شد:

همچنین لیست کامل Mime Types‌ها در آدرس زیر موجود است:

لیست کامل Mime Types 

نظرات

  • مهمان در ۱۳۹۱/۱۲/۲۹ ۱۵:۲۷
    شما اگر این تنظیمات رو توی پروژه خودت انجام بدی ، احتیاجی نیست برای IIS  حتما MimeType  تعریف کنی. البته فقط قسمتهایی از این تنظیمات در مورد مساله ای که گفتی لازم هست اما من برای ایده گرفتن در مورد تنظیمات IIS 7  و به بالا در web.config  که کلا مهجور مونده ، تنظیماتی که خودم معمولا می‌ذارم رو گذاشتم اینجا.
      <system.webServer>
        <urlCompression doStaticCompression="true" doDynamicCompression="true" />
      <staticContent>
        <remove fileExtension=".js"/> 
        <mimeMap fileExtension=".js" mimeType="text/javascript" />
        <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
        <mimeMap fileExtension=".m4v" mimeType="video/m4v" />
        <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
        <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
        <mimeMap fileExtension=".webm" mimeType="video/webm" />
        <mimeMap fileExtension=".oga" mimeType="audio/ogg" />
        <mimeMap fileExtension=".spx" mimeType="audio/ogg" />
        <mimeMap fileExtension=".svg" mimeType="images/svg+xml" />
        <mimeMap fileExtension=".svgz" mimeType="images/svg+xml" />
        <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
        <mimeMap fileExtension=".otf" mimeType="font/otf" />
        <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
      </staticContent>
    • مهمان در ۱۳۹۱/۱۲/۲۹ ۱۶:۳۹
      البته با توجه به پردازش سلسه مراتبی فایل‌های config در وب سرور احتمال دارد در برخی میزبان‌های اشتراکی برخی از قابلیت‌ها توسط مدیر سرور Lock شود.
    • ناصر فرجی در ۱۳۹۲/۰۱/۰۱ ۱۵:۴۱
      بله. تمامی تنظیمات iis رو به نوعی میشه از طریق web.config هم انجام داد ولی برای اعمال سراسری تنظیمات بهتره از iis استفاده بشه.
  • سارا نصراللهی در ۱۳۹۴/۱۱/۲۷ ۹:۳۲
    با سلام و تشکر از نکته ای که مطرح کردید.
    من مشکل مشابهی با mime type‌ها در باز کردن فایل‌های xlsx دارم که ممنون میشم راهنمایی بفرمایید.
    با اینکه Mime Type  مربوطه رو روی iis ایجاد کردم اما همچنان با باز کردن فایل‌های xlsx مشکل دارد.
    به نظرتون مشکل از کجاست؟
    • وحید نصیری در ۱۳۹۴/۱۱/۲۷ ۱۰:۱
      - در IISهای جدید (از نگارش 7 به بعد) xlsx به صورت پیش فرض در IIS تعریف شده‌است و مشکلی با آن نیست و نیازی به تعریف مجدد ندارد:


      - برای IIS 6 : «مشکل IIS6 و دریافت فایل‌های آفیس 2007» 

      + بهتر است با ابزارهای Web Developer مرورگرها بررسی کنید دقیقا چه خطایی دریافت می‌کنید.