اذهب إلى المحتوى

السؤال

نشر

في مشروع فلاسك Flask لدي، عندما أقوم بعمل أي تغيرات على ملف JavaScript وتحديد الصفحة في المتصفحة لا تظهر هذه التغيرات ويتم تحميل نسخة قدمة من ملف جافاسكريبت لا تحتوي على آخر التغيرات.

كيف أحل هذه المشكلة؟ هل توجد طريقة لحذف الملفات المؤقتة Cached في فلاسك Flask

Recommended Posts

  • 1
نشر

قد يكون سبب هذه المشكلة هو المتصفح نفسه وليس فلاسك Flask وللتأكد من هذا الأمر حاول أن تقوم بتجربة المشروع بإستخدام متصفح مختلف فإذا تم تحميل الملفات بشكل صحيح وتحتوي على آخر التحديثات، فيجب أن تقوم بحذف الملفات المؤقتة من متصفح الويب الخاص بك من خلال أحد هذه الطرق (تختلف حسب نظام التشغيل لديك):

ويندوز: Ctrl+F5

ماك: Cmd+Shift+R أو Cmd+Opt+R 

لينكس: Ctrl+Shift+R

أيضًا تستطيع تغير اسم ملف JavaScript وسيقوم المتصفح بإعادة تحميله مرة أخرى بأحدث التعديلات عليه.

يمكنك أيضًا أن تضيف متغير إلى رابط الملف كمعامل URL بالشكل التالي:

script.js?some_variable=file_timestamp

حيث تقوم بتغير قيمة المعامل file_timestamp بإستخدام فلاسك Flask في القالب بأي رقم عشوائي Random وحينها سيقوم المتصفح بإعادة تحميل الملف كل مرة، على النحو التالي:
 

def last_updated_timestamp(folder):
    return str(max(os.path.getmtime(os.path.join(root_path, f))
                   for root_path, dirs, files in os.walk(folder)
                   for f in files))

@app.route('/')
def index():
    return render_template('index.html', timestamp=last_updated_timestamp('./static'))


# في القالب 
<script type="text/javascript" src="/static/script.js?u={{ timestamp }}"></script>

وستكون النتيحة بالشكل التالي:

<script type="text/javascript" src="/static/script.js?u=1641149029.12"></script>

حل آخر وهو إخبار المتصفح بألا يقوم بحفظ الملفات لأكثر من فترة معينة من خلال تحديد الخاصية cache_control.max_age بعدد ثواني معينة بالشكل التالي:

@app.route('/api/v1/users/')
def get_users():
    data = {"name": "sameh"}
    response = jsonify(data)
    response.cache_control.max_age = 60 * 60 * 24  # يوم واحد بالثواني
    return response

بهذا الشكل لن يقوم المتصفح بحفظ الملفات الثابتة (ملفات CSS/JS/JSON .. إلخ) لفترة أطول من يوم واحد.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...