GridJs te tembel yükleme nasıl yapılır
tembel yükleme hakkında
Birden fazla çalışma sayfası içeren bir elektronik tablo dosyasıyla ilgilenirken, yükleme sürecini optimize etmek için başlangıçta yalnızca etkin olan çalışma sayfasını yükleyebiliriz.
Bu strateji, başlangıçta sunucu tarafı JSON yanıtının yalnızca etkin seçilen çalışma sayfasına ait verileri içermesini sağlar.
Sonuç olarak, ilk web trafiği önemli ölçüde azalır ve yükleme süresi en aza indirilerek kullanıcı deneyimi geliştirilir.
Ayrıca, GridJs kullanıcı etkileşimlerine dinamik olarak yanıt vermek üzere tasarlanmıştır. Özellikle, bir kullanıcı farklı bir çalışma sayfasına tıkladığında,
GridJs, bu çalışma sayfası için verileri almak amacıyla sunucuya istekte bulunmayı akıllıca tetikler.
Bu isteğe bağlı yükleme mekanizması, gereksiz veri transferlerini daha da azaltır ve kullanıcının şu anda üzerinde çalıştığı çalışma sayfası için her zaman en güncel bilgilere erişimini sağlar.
Bu yaklaşımı benimseyerek, yalnızca başlangıç yükleme süresini optimize etmekle kalmaz, aynı zamanda elektronik tablo dosyasındaki çalışma sayfası sayısı arttıkça iyi ölçeklenebilen duyarlı ve verimli bir uygulama da sürdürebiliriz.
GridJs’te tembel yükleme uygulamak için adımlar
Tembel yükleme için yapılandırma seçeneği ayarla.
örneğin:
Config.set_lazy_loading(True)
Tembel yükleme için işlem URL’sini ayarla.
örneğin:
const lazyLoadingUrl = "/GridJs2/LazyLoading";
xs.setLazyLoadingUrl(lazyLoadingUrl);
Kullanıcı başka bir çalışma sayfasına tıkladığında, aktif olmayan araştırma sayfası ��ta mı? sorgusu otomatik olarak elektronik tablo uygulaması tarafından tetiklenir.
Sunucu tarafında Kontrolörde tembel yükleme işlemini uygula.
örneğin:
@app.route('/GridJs2/LazyLoading', methods=['POST'])
def lazy_loading():
sheet_name = request.form.get('name', '')
uid = request.form.get('uid', '')
if not sheet_name:
return jsonify({'error': 'sheet_name is required'}), 400
if not uid:
return jsonify({'error': 'uid is required'}), 400
wbj = GridJsWorkbook()
try:
output = io.BytesIO()
with gzip.GzipFile(fileobj=output, mode='wb', compresslevel=9) as gzip_stream:
wbj.lazy_loading_stream(gzip_stream,uid, sheet_name)
response = Response(output.getvalue(), mimetype='application/json')
response.headers['Content-Encoding'] = 'gzip'
return response
except Exception as e:
return Response(str(e), status=500)