2014-09-15 96 views
16

<head> bölümünde yaklaşık 12 kısa JS dosyası içeren bir uygulama yazıyorum (Biliyorum, onları birleştirmeliyim ve <body>'un bitiminden hemen önce taşıyalım)Chrome sadece JS dosyalarını yüklemeyi tamamlamıyor

Sorun, uygulamayı Chrome'a ​​yüklemeyi denediğimde, Bazı dosyalar hemen yüklenirken, bazıları hiç yükleme işlemini tamamlamıyor. Chrome, 12 JS dosyasını yüklemeye çalışıyor ve "Dur" a basana kadar sayfayı hiçbir zaman oluşturmuyor. Ben dur vurduğunda

, HTML oluşturulduğunda ve JS dosyaları aşağıdaki resimde olduğu gibi başarısız: Farklı JS dosyaları her denemede başarısız

JS Load errors

Not! Her seferinde sıkışan aynı dosya değil!

Başarısız dosyaların başlıklarını incelemek "Dikkat: istek henüz tamamlanmadı" şeklindedir. Dosyalar bazen "Receiving" içinde bazen çok dakika kalmış! Ben omnibar ve enter tuşuna basın odaklanmak eğer

enter image description here

Şimdi burada dur vurduktan sonra, eğlenceli parçası, tüm JS dosyaları yük anında ve uygulama çalışıyor!

Sunucu tarafında, Apache, PHP ve MySQL kullanıyorum. Apache'de bir şeyi yanlış yapılandırdım mı?

2 yorucu gün sonra DURUMU: zilch, hiçbir şey, nada, bu beni deli ediyor. Farklı makinelerden kodu çalıştırmayı denedim, apache önbellek ayarlarını değiştirmeyi denedim ve javascript'te sayısız şeyi değiştirdim ama hiçbir şey işe yaramadı. En kötüsü, hiç kimsenin problemin nerede olduğunu belirleyememesi!

+0

Bazı krom uzantılarınızı kapatmayı deneyin. Adblock'un gelişmeye müdahale ettiği bilinmektedir. – evolutionxbox

+0

Tüm uzantılar engellendi. Daha önce böyle bir şeyle karşılaşmamış mı? Ve neden aşağı oy? Hiçbir yerde bir çözüm bulamıyorum! –

+0

Dosyaları başka bir yerde barındırmayı denediniz mi? Belki bir tür mime türü sorun var? (Oy vermedim). – evolutionxbox

cevap

16

Bir olasılık, Keep-Alive etkinleştirilmiş ve düzgün çalışmıyor. Bunu daha önce gördüm. Tarayıcı ilk birkaç dosyayı (CSS, JS vb.) Indirmek için sunucunuza maksimum bağlantı sayısı (genellikle 6) kurar ve bu bağlantılar zaman aşımına uğramadan serbest bırakılmaz. Belirtilerim sizinkiyle aynı değildi - zaman aşımı 20 saniyeydi ve her şey 6'lık partiler halinde bundan sonra yüklenecekti - ama bu hala bir neden olabilir.

Apache yapılandırmanızda (çoğu sistemde httpd.conf), KeepAlive satırına bakın (veya eksikse ekleyin) ve Off olarak ayarlayın.

+0

"Keep-alive" üzerinde düzgün çalışmamaya özen gösterir misiniz? Meseleye nasıl sebep olur? IIS ile aynı sorunu yaşıyorum. –

5

Bir yanıttan daha fazlası, sorunu nasıl giderebileceğimi burada bulabilirsiniz.

Denediğim şeylerden biri, eşiğin nerede olduğunu görmek için etiketleri birer birer yorumlamak ve yeniden yüklemek. Ayrıca, bu muhtemelen bir sunucu yapılandırma problemi olduğu için, her denemeden sonra, temiz bir sayfa sora sahip olmak, yani konuşmak, yani denemeler arasında korunan bir durum olmaması için yeniden başlatabilirim.

Favori dilinizdeki bir komut dosyasından gelen çeşitli Javascript'lerin isteklerini yapmaya çalışarak daha fazla ipucu almaya çalışırdım. İdeal olarak, istekleri arasında birkaç milisaniye beklerken komut dosyalarını tek tek (kıvrımlı olarak söyleyin) GET. Burada bir eşiğe bastığımı hayal ediyorum. Sanki saniyede bir betik çalışması gibi, ancak istekler çok yaklaştığında sunucu sıkışır.

Hala bir ipucu yoksa, tarayıcı ile sunucu arasındaki trafiği izlemek için tcpdump kullanırdım. Tamam, bu biraz düşük seviye olabilir!

Belki de netstat'ı, kaynakları almak için tarayıcının paralel olarak sunucuya kaç tane bağlantı açtığını ve eşzamanlılık sınırına ulaşıp ulaşmadığımızı görmek için kullanırım.

Üzgünüm, bu bir çözümdür, ancak umarım bazı fikirler alırsınız ve sonunda sorunun ne olduğunu bilmek beni çok merak ederdi!

0

Birkaç iyi yanıt var, ancak bunu yapmak için kusursuz bir yöntem istiyorsanız, tüm komut dosyalarını bir kerede göndermek için PHP'yi kullanabilirsiniz. Sorun sunucusuna gerçekten çok fazla sayıda bağlantı ise, bu gibi bazı html kodu ekleyebilirsiniz: o zaman

<script type="text/javascript" src="scripts/scripts.php /> 

Ve scripts.php yılında JavaScript dosyaların tümü şöyle içerecek şekilde include() işlevini kullanın:

<?php 
header(''); // control all your headers 
include('jquery-1.9.1.min.js'); 
// rest of scripts 
?> 

Başka hiçbir şey çalışmıyorsa ve sorun aşırı bağlantılarsa, bu işe yaramalıdır.

1

içerik-uzunluk başlığı kontrol krom veya sunucu -

1

Tarayıcıda bir istek yapıldıktan sonra tam olarak "Dikkat: istek henüz tamamlanmadı" mesajını aldık.

İsteğin kendisi, bir Angular 1 uygulamasına beslenen 15 MB JSON sırasına göre yapıldı. Bu istek yaklaşık 2 saniye sürdü. İstek bittikten hemen sonra, Açısal özet döngüsü tarayıcıyı 12 saniyeden daha uzun bir süre boyunca engelledi (bu istek sırasında profil tarafından görülebilir). Bu süre zarfında Chrome, "Tamamlandı: istek henüz tamamlanmadı" mesajını gösterdi.

İlgili konular