Bir arkadaşım, <div style=""></div>
sıkıştırılmış css dosyası yerine link href
baş kısmındaki gibi koymanın performans artışı sağladığını söyledi. Bu doğru mu?
Bir arkadaşım, <div style=""></div>
sıkıştırılmış css dosyası yerine link href
baş kısmındaki gibi koymanın performans artışı sağladığını söyledi. Bu doğru mu?
Yanıtlar:
Arkadaşınızın bahsettiği performans artışı, bir CSS dosyası kullanan performans artışı miktarıyla (diğer faktörlerle) karşılaştırıldığında muhtemelen çok önemsizdir.
Tarz niteliğini kullanarak, tarayıcı yalnızca bu belirli öğe için kuralı boyar, bu durumda <div>
öğe budur. Bu, CSS motorunun hangi öğelerin CSS seçiciyle eşleştiğini bulması için arama süresini azaltır (ör. a.hover
Veya #someContainer li
).
Bununla birlikte, stili öğe düzeyinde koymak, CSS stil kurallarını ayrı ayrı önbelleğe alamayacağınız anlamına gelir. Genellikle CSS dosyalarına stil koymak, önbelleğe alma işleminin yapılmasına izin verir ve böylece bir sayfayı her yüklediğinizde sunucudan gelen yükleme miktarını azaltır.
Stil kurallarını öğe düzeyinde koymak, aynı zamanda hangi öğelerin ne şekilde biçimlendirildiğini unutmanıza neden olur. Ayrıca, birden çok öğeyi birlikte yeniden boyayabileceğiniz belirli bir öğeyi boyama performans artışını geri tepebilir. CSS dosyalarını kullanmak, CSS'yi HTML'den ayırır ve böylece stillerinizin doğru olduğundan ve daha sonra değiştirmenin daha kolay olduğundan emin olmanızı sağlar.
Bu nedenle, karşılaştırmaya bakarsanız, CSS dosyası kullanmanın öğe düzeyinde stil oluşturmaktan çok daha fazla faydası olduğunu görürsünüz.
Harici bir CSS stil sayfası dosyanız olduğunda, tarayıcınız dosyayı önbelleğe alabilir ve bu da uygulama verimliliğinizi artırır!
Satır içi stilleri ve stil sayfalarını kullanırsanız sayfa daha hızlı yüklenir. Bazı durumlarda daha hızlı gerekir.
Href kullanarak bir stil sayfası kullandığınızda, sunucuya başka bir istek, ardından yanıttan sonra dosyanın ayrıştırılması gerekir. Satır içi stillerde bunların hiçbiri yoktur, sadece doğrudan ayrıştırma.
Bir müşterinin interneti yavaşsa, bu tek istek çok yavaş olabilir ve stil sayfası teslim edilene kadar sayfa stilsiz kalır. Yine, satır içi olsaydı hiçbir gecikme olmazdı.
Stil sayfalarını kullanmamızın tek nedeni organize olmaktır. İhtiyaç duyulmayan zamanlar vardır, bu nedenle satır içi stiller veya belge içi stil sayfaları yeterlidir.
Cevaplaması kolay bir soru değil çünkü bu durumda performans birçok faktöre (CSS seçicilerinin karmaşıklığı, belge boyutu vb.) Bağlıdır. Bununla birlikte, izole bir durum alırsak, CSS sınıfının genel olarak satır içi stilden daha hızlı olduğunu görebiliriz:
Satır içi stil vs CSS sınıfı
Olabilir, ancak bağlantılı veya harici stil sayfasının nedeni, özellikle aynı div'i site için birden çok sayfada kullanırken tarayıcıda önbelleğe alınabilmesidir. Bu, tarayıcının sayfayı her yeniden yüklediğinde kodu yeniden yüklemek yerine tarayıcının stil sayfasını yalnızca bir kez yüklemesi gerektiği anlamına gelir. Ayrıca, herhangi bir değişikliği veya hata ayıklamayı kolaylaştıran daha temiz kod sağlar.
GERÇEK 'EVET'
Çok büyük bir fark var. Özellikle kullanıcı arayüzünü otomatikleştirirken. Aşağıdaki kodu deneyin. Geliştirmek için IE10 ve not defteri kullanıyorum. Giderken öğreniyorum ve testler yapıyorum, bu kısaltılmış bir versiyon testidir. (cevabınızı göstermek için kodu düşürdüğümde hatalar olabilir)
Referans verdiğiniz resme tıklayın ve uyarı mesajlarını okuyun. İPUCU: Bu dosyayı, düzenlemeden (test etmeden) önce düzenleme olarak yeniden kaydedin.
En iyi dileklerimle, Don
<!DOCTYPE html>
<head>
<style>
div.grid
{
width:180px;
height:42px;
border:none;
}
img
{
width:50px;
height:50px;
margin:2px;
float:left;
border: 1px solid red;
}
</style>
<script>
function handleSelect(xId)
{
//
// TESTPOINT
alert("TESTPOINT\r>Grid: " + xId);
//
// GET BORDER COLOR
// NOTE: An empty or blank value when you can see a border means the tag itself does not
// have 'border properties' (style="border: 2px{width} solid{style} green{color}").
// although there can be a border detailed via css local or external or via code (script).
// If the 'border properties' are returned then they were setup at the tag as
// above or the 'border properties' were updated by script code not css code.
// If the 'border properties' are NOT returned then they were setup via css.
// Thus, since everything seems to be heading toward edit on the fly (live) then css is NOT the way to go (learning).
// HINT: Margin property is also not readable if set via css. Most likely all the properties values are the same way.
// Thus, setting the property values of a tag should be set at the tag control.
// (works) cBorder=document.getElementById(xId).style.borderWidth;
// (works) cBorder=document.getElementById(xId).style.borderStyle;
// (works) cBorder=document.getElementById(xId).style.borderColor;
// (works) cBorder=document.getElementById(xId).style.border;
//cBorder=document.getElementById(xId).style.border;
cBorder=document.getElementById(xId).style.margin;
alert("TESTPOINT\r>Grid: " + xId + "\r>Border: " + cBorder);
//
// SELECT IMAGE
document.getElementById(xId).style.margin="1px";
document.getElementById(xId).style.border="2px solid gold";
document.getElementById(xId).innerHTML=xId;
alert("TESTPOINT\r>Grid: " + xId + "\r>Border: " + cBorder + "\r>[set border color gold]");
//
// GET BORDER COLOR
//var cBorder=document.getElementById(xId).style.border-Color; //Error
//var cBorder=document.getElementById(xId).style.border-color; //Error
//var cBorder=document.getElementById(xId).style.borderColor; //Error
//var cBorder=document.getElementById(xId).style.bordercolor; //Undefined
cBorder=document.getElementById(xId).style.border; //Empty
alert("TESTPOINT\r>Grid: " + xId + "\r>Border: " + cBorder + "\r>[set border color gold]" + "\r>Border: " + cBorder);
}
</script>
</head>
<body>
<div class="grid">
<img style="border: 2px solid green" id="R0C0" src="someimage.bmp" onclick="handleSelect(id)">
<img style="border: 2px solid blue" id="R0C1" src="someimage.bmp" onclick="handleSelect(id)">
<img style="border: 2px solid purple" id="R0C2" src="someimage.bmp" onclick="handleSelect(id)">
</div>
<div class="grid">
<img id="R1C0" src="someimage.bmp" onclick="handleSelect(id)">
<img id="R1C1" src="someimage.bmp" onclick="handleSelect(id)">
<img id="R1C2" src="someimage.bmp" onclick="handleSelect(id)">
</div>
<div class="grid">
<img id="R2C0" src="someimage.bmp" onclick="handleSelect(id)">
<img id="R2C1" src="someimage.bmp" onclick="handleSelect(id)">
<img id="R2C2" src="someimage.bmp" onclick="handleSelect(id)">
</div>
</body>
</html>
Bence sabit bir cevap yok.
Bir inline CSS
daha hızlı yüklenir eğer daha hızlı sunucudan daha CSS içerik boyutu indirmeleri yanıt vereceğini external CSS file
istek (dikkate DNS zaman, sunucu gecikme, vs).
Normal boyutta CSS için bunları sayfada satır içine alırdım, 15-20KB'nin üzerinde bir şey için muhtemelen onu harici bir dosyaya koyar ve önbelleğe alınabileceğinden emin olurdum.
Eminim şu anda kaçırdığım birçok başka husus vardır, ancak inline ile harici arasında sabit bir cevap yoktur.
Dış stil sayfalarını kullanmak kesinlikle daha iyi bir seçenektir çünkü div (ler) e uyguladığınız stili hatırlamanıza yardımcı olacaktır. Sayfayı yükleme süresini kısaltır çünkü HTML kodu ne kadar azsa o kadar hızlı yüklenir.
Ancak bazı durumlarda, belirli bir div'in bazı özelliklerini değiştirmeniz gerekebilir, bu durumda satır içi stil en iyi seçenektir. Ve gerçekten konuşursak, bir veya iki satır içi stil, sayfanın yüklenme süresinde herhangi bir değişiklik yapmaz.
Başka bir dahili stil sayfası seçeneği vardır, ancak yalnızca bir şablon oluşturuyormuş gibi tek sayfalık bir web siteniz olduğunda kullanılır. Bunun nedeni, her HTML sayfasında CSS yazmanız gerektiğidir.
Diğer her öğe veya görüntü için birden fazla küçük CSS dosyasının bulunduğu harici CSS yerine satır içi CSS kullanmayı tercih ederim. Her birinde yalnızca 5-10 satır kod bulunan birkaç CSS dosyası indirmenin anlamı yok. Öğeniz üzerine gelme, etkin, işaretli vb. Özellikler içeriyorsa, geliştirme sürecinizi karmaşıklaştırmayacağı için harici bir CSS dosyası kullanmanız gerekir.