cache کردن فایلهای استاتیک در انجینکس | caching static files in Nginx
توی این نوشته میخوایم ببینیم که چطوری میشه فایلهای استاتیک رو برای مدت زمان محدودی نگهداری (cache) کرد و باعث بهینه سازی و بهبود سرعت سایت بشیم.
خب بصورت خلاصه برای کش کردن در انجینایکس میتونید از کد زیر استفاده کنید که کامل توضیح میدم چیکار میکنه.
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 12d; }
خب اینجا دایرکتیو یا کانتکست location رو میبینید که کارش اعمال تنظیمات روی درخواستهاییست که با این الگو همخوانی داشته باشه.
~* \.(jpg|jpeg|png|gif|ico|css|js)$این کد چیکار میکنه و چیه؟
اینجا دوتا قسمت داریم و یکی از اون قسمتها ~* هستش.
~* به این معنی هستش که درخواست ارسال شده حساس به حروف بزرگ و یا کوچک نباشد، یعنی ABC با aBc تفاوتی ندارد و اگر با الگو مطابقت داشت، تنظیمات روی آن اعمال میشود. اگر میخواهید که به حروف کوچیک یا بزرگ حساس باشد کافیست که تنها ~ رو استفاده کنید.
قسمت دوم \.(jpg|jpeg|png|gif|ico|css|js)$ تعریف پسوند فایلهایی میباشد که میخواهیم کش کنیم.
خب اینجا \. یعنی اینکه یک نقطه در کاراکتر وجود داشته باشد و سپس یکی از پسوندهای تعریف شده مثل jpg بعد از آن قرار بگیرد.
به عنوان مثال .jpg باشد!
علامتی که در بین پسوندها میبینید “|” به معنی “یا” میباشد. یعنی یا jpeg باشد یا jpg یا png یا …
حالا اگر به انتهای رشته دقت کنید میبینید که علامت دلار ($) میبنید. به این معنیست که رشته با یکی از پسوندهایی که تعریف کردیم پایان یابد.
یعنی اگر درخواست به این شکل بود:
dailynginx.ir/file.jpeg بیا و این درخواست رو کش کن.
اگر فرضا درخواست به این شکل باشد:
dailynginx.ir/file.webp این درخواست کش نمیشود!
در ادامه میگیم که این درخواست چه مدت زمانی کش شود.
expires 12d;
اینجا کلمه expire به معنیه انقضاست! یعنی 12 روز (d) دیگه کش رو پاک کن. کلمه (d) به معنیه روز هستش.
خب این قسمت هم به پایان رسید، امیدوارم که خلاصه و مفید و قابل فهم بوده باشه 🙂
موفق باشید.