محسن
6 سال پیش توسط محسن مطرح شد
8 پاسخ

اعمال نشدن css ها وتغییرات جدید توی سایت

سلام کسی میدونه چجوری به مرورگر بفهمونیم وقتی کد های css و js رو تغییر دادیم دوباره load اشون کنه و کش رو پاک کنه و اون فایل قدیمی ها رو دوباره load نکنه؟
چون من هر تغییری میدم اما مرورگر ها تغییرات نشون نمی دن همون فایل قبلی ها رو از کش فراخونی میکنن سایت بهم میریزه تا کش مرورگر رو پاک کنیم درست شه اگه کسی میدونه کمک کنه خیلی ممنون میشم


ثبت پرسش جدید
مهدی ابراهیمی
تخصص : برنامه نویس وب
@azkia 6 سال پیش آپدیت شد
2

سلام
اگه از لاراول استفاده میکنی فکر کنم اینجا بتونی راه حلتو پیدا کنی.

mix.js('resources/js/app.js', 'public/js')
   .version();

Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
0

سلام
@Mohsens

یه راهش هست که همین کاری که میکنید و پاک میکنید
یه راه دیگه برای رفرش استفاده از Ctrl + F5 هست
که از اول همه چی رو رفرش میکنه و از کش فراخونی نمیکنه.


محسن
تخصص : برنامه نویس ، اسکرام مستر
@Mohsens 6 سال پیش مطرح شد
0

آره اما به کاربر ها که نمی تونیم بگیم اومدی تو سایت ctrl + f5 رو بزن تا اگه تغییر ای ایجاد شده بتونی ببینی


مهدی ابراهیمی
تخصص : برنامه نویس وب
@azkia 6 سال پیش آپدیت شد
2

سلام
اگه از لاراول استفاده میکنی فکر کنم اینجا بتونی راه حلتو پیدا کنی.

mix.js('resources/js/app.js', 'public/js')
   .version();

سید محمد حسین موسوی
تخصص : FullStack Developer
@SeyedMH.Mosavi 6 سال پیش مطرح شد
1

برای اینکار دو تا روش وجود داره.
یکی سمت سروری و یکی سمت کلاینت. سمت سرور رو که دوستمون گفتن و بسته به زبان و فریم ورک می تونه متفاوت باشه.
برای سمت کلاینت هم می تونی از query string استفاده کنی:

styles1.css?v1
style2.css?version=1
script1.js?salam
script2.js?123

مهمه نیست بعد از علامت سوال چی می زاری. مهم اینه که هر بار اون رو تغییر بدی مرورگر مثل یه فایل جدید باهاش رفتار می کنه و دوباره برای کاربر load اش می کنه و اینطوری دیگه مشکل کش سمت مرورگر حل می شه
یه زمانی شما یا بلد نیستی، یا دوست نداری یا یه تعداد فایل داری که نمی خوای وقتی یکی رو تغییر دادی مجبور بشی همه رو از اول کاربر بارگزاری کنه، می تونی از روش سمت کلاینتی استفاده کنی.
یه زمان دیگه که کارت رو راه می اندازه و سمت سرور نمی تونه بهت کمکی کنه یا دردسر داره، فایل های استاتیکی هست که تو پروژه داری ازش استفاده می کنی و تو مرورگر هم کش شده. اینجا هم می تونی از این روش استفاده کنی. کافی اخر اسم فایل ؟ بگزاری و یه چیزی قرار بدی که با دفعه قبلی فرق می کنه


وب دیزاینر
@it1press 6 سال پیش مطرح شد
0

@Mohsens

سلام
باید تو htaccess زمان فایل ها رو بر اساس ثانیه، ساعت، هفته یا روز تعریف کنید.
کدهای زیر می تونه کمکتون کنه. فقط فایل هایی که زود به زود تغییر داده میشن رو باید زمان کمتری براشون تعریف کنید.

<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 year"
AddType image/svg+xml .svg
AddType application/vnd.ms-fontobject .eot
AddType application/x-font-ttf .ttf
AddType application/x-font-opentype .otf
AddType application/x-font-woff .woff
ExpiresByType application/vnd.ms-fontobject "access 1 year"
ExpiresByType application/x-font-ttf "access 1 year"
ExpiresByType application/x-font-opentype "access 1 year"
ExpiresByType application/x-font-woff "access 1 year"
ExpiresByType application/javascript "access 1 year"
ExpiresByType application/pdf "access 1 year"
ExpiresByType application/x-shockwave-flash "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
</ifModule>

caching

1 Hour = 3600

1 Day = 43200

1 Week = 604800

1 Month = 2592000

1 Year = 29030400

<filesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>


elhammaleki
تخصص : طراح و توسعه دهنده
@mrselmaleki 5 سال پیش مطرح شد
0

کنترل اف ۵


-1

توضیح تصویر رو وارد کنیدسلام خدمت دوستان برای اینکه مرور گر تغییرات جدید رو اعمال کنه خیلی راحت تگ php رو جلوی فایل css یا js خود باز و بسته کنید و درونش از تابع time استفاده کنید
دیگه نیازی نیست بعد از تغییرات کاری انجام بدی اتوماتیک اعمال میکنه با تشکر


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
1

@tehranirashid
دوست عزیز؛ این روش به ظاهر مشکل رو حل می‌کنه و شکی در اون نیست. ولی یک مشکل شاید بزرگ تر ایجاد می‌کنه! اینکه شما با این کار کلا سیستم Cache رو دارید از کار می اندازید. چون در هر بار لود شدن صفحه یک مقدار متفاوت خواهد گرفت. این یعنی یک کاربر اگر از ۵ صفحه سایت شما بازدید کنه ۵ بار مجبور هست کلیه فایل‌های CSS و JS شما رو دانلود کنه. و سرور شما هم مجبور هست ۵ بار فقط برای همین یک کاربر کلیه این فایل ها رو serve کنه.
همین رو ضرب کنید در یک بازدید ۵۰۰۰ نفره و میانگین بازدید از ۱۰ صفحه سایت شما!

در حالی که اگر روش اصولی و درست مثل استفاده از روش های Cache Busting که در لاراول میکس و پکیج های دیگه تعبیه شده استفاده کنید همزمان هم از مزیت cache شدن فایل ها روی سیستم کاربرها استفاده می‌کنید و به این شکل بهینه سازی بسیار بالایی رو شاهد خواهید بود. و هم هر زمان که یکی از فایل ها تغییر پیدا کرد عملیات دانلود فایل جدید و اعمال تغییرات بصورت اتومات انجام میشه و هیچ کار اضافه ای لازم نیست انجام بشه.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام