Các hình ảnh CSS không được sử dụng được tải xuống?


127

Là hình ảnh CSS không sử dụng được tải xuống bởi trình duyệt hoặc bỏ qua?

Ví dụ. trong các quy tắc CSS không khớp với bất kỳ yếu tố nào.

.nothingHasThisClass{background:url(hugefile.png);}

Hay điều này sẽ phụ thuộc vào trình duyệt?


20
+1 cho câu hỏi thú vị
Jitendra Vyas

Câu trả lời:


89

Điều này sẽ phụ thuộc vào trình duyệt, vì đó là cách họ quyết định triển khai thông số kỹ thuật, tuy nhiên trong một thử nghiệm nhanh ở đây:

  • Chrome: Không
  • FireFox: Không
  • Safari: Không
  • IE8: Không
  • IE7: Không
  • IE6: Không biết (Ai đó có thể kiểm tra và nhận xét không?)

1
Tôi cho rằng bạn đã thử nghiệm trên Windows? Nếu bạn muốn thêm so sánh giữa các nền tảng sau đó tôi có thể cung cấp Firefox 3.6.x và Chrome 5.0.307.11 (Ubuntu 9.10) cũng không . =)
David nói phục hồi Monica

Aha, tôi hiểu rồi. Tôi nghĩ rằng sẽ rất kém cho firefox, chrome và safari để tải chúng, nhưng tôi sẽ không đưa nó qua IE. Kết quả này có giống với IE 6 và 7 không?
Alex

@Alex - IE7 Có, mặc dù một trang phức tạp hơn có thể đánh lừa nó? IE6 Tôi không thể kiểm tra xem mình đang ở đâu ... có lẽ ai đó ở đây có thể và cập nhật câu trả lời của tôi.
Nick Craver

49
Tôi có thể nộp đơn phản đối việc kiểm tra bất cứ điều gì trong IE6 không?
Dave Markle

2
@Dave: Mọi thứ nên được kiểm tra trong IE6 (người không trung thực đã rời đi), nếu nó chạy chính xác ở đó và nó sẽ có trong mọi trình duyệt chết tiệt: P
N 1.1

13

Không, chúng không được tải xuống, ít nhất là trong Firefox, IE8 và Chrome.

Một cách dễ dàng để kiểm tra điều này:

<!DOCTYPE html>
<html>
    <head>
       <style type="text/css">
        .nonexistent {
            background: url('index.php?foo');
        }
        </style>
    </head>
    <body>
<?php if(isset($_GET['foo'])) {
    file_put_contents('test.txt', $_SERVER['HTTP_USER_AGENT']);
} ?>
    </body>
</html>

Nếu test.txtđược điền với tác nhân người dùng của trình duyệt, thì hình ảnh được tải xuống. Đây không phải là trường hợp trong bất kỳ thử nghiệm của tôi.


9

Một thử nghiệm nhanh đã chứng minh điều đó.

<!DOCTYPE html>
<html>
<head>
<title></title>

<style type="text/css"><!--

.hasnothing{background-image:url(http://25.media.tumblr.com/tumblr_ky7aakqvH01qatluqo1_400.jpg);}
.hassomething{background-image:url(http://27.media.tumblr.com/tumblr_kxytwr7YzH1qajh4xo1_500.png);}

--></style>

</head><body>

<div class="hassomething"></div>

</body></html>

Hình ảnh thứ 2 tumblr_kxytwr7YzH1qajh4xo1_500.png, đã được tải xuống nhưng không phải hình ảnh khác. Điều này đã được chứng minh là đúng trong Chrome (Công cụ dành cho nhà phát triển) và Firefox (Fireorms).


8

Firefox và Chrome (Ubuntu 9.10) không tải xuống hình ảnh cho các lớp / id không được áp dụng trong DOM.

Điều này có thể phụ thuộc cả nền tảng trình duyệt.


3

Đôi khi, nó phụ thuộc chính xác "không sử dụng" nghĩa là gì. Các trình duyệt khác nhau định nghĩa nó khác nhau. Ví dụ: trong Firefox, các kiểu được áp dụng cho <noscript>thẻ được coi là "không sử dụng" và do đó, mọi hình ảnh sẽ không được tải xuống.

Chrome 26 (có thể là tất cả trong số chúng, không chắc chắn), sẽ tải xuống hình ảnh CSS nếu chúng được áp dụng cho thành <noscript>phần, ngay cả khi bật JS. (Tôi không rõ ngay lập tức tại sao, có lẽ đây là một lỗi?).

không tải hình ảnh CSS áp dụng cho các yếu tố trong các <noscript>yếu tố, mặc dù. (đây là hành vi dự kiến, tất nhiên).

Thí dụ:

CSS:

noscript { background-image: url('always.png') 0 0 repeat; }
noscript p ( background-image: url('nojsonly.png') 0 0 repeat; }

HTML:

<noscript>The CSS background image of this NOSCRIPT-element will always be downloaded in Chrome.  Will not be downloaded in Firefox</noscript>
<noscript><p>The CSS background image of this P-element won't be downloaded in Chrome or other browsers, unless JS is disabled</p></noscript>

Trong trường hợp này, nếu người dùng đã kích hoạt JS, cả hai luôn.png và otherbg.png đều được tải xuống trong Chrome. Nếu người dùng không kích hoạt JS, thì chỉ nojsonly.png được tải xuống trong Chrome.

Tôi sử dụng kỹ thuật này để đo mức lưu lượng truy cập từ những người dùng không hỗ trợ JS, vì Google Analytics không cho chúng tôi ở đây. Tôi thích sử dụng hình ảnh CSS nền hơn là <img...>thẻ thông thường , bởi vì tôi đang làm việc theo lý thuyết (chưa được kiểm tra) rằng các bot ít có khả năng lấy hình ảnh CSS hơn <img...>hình ảnh, để lại số lượng người truy cập chính xác hơn.


2

Hầu như tất cả các trình duyệt làm lười tải. Nếu một hình ảnh là không cần thiết, nó không tải xuống. Sử dụng fireorms (add-on trong Firefox / Chrome) để xem thời gian tải tài nguyên.


0

Tuy nhiên, điều thú vị là Chrome (ít nhất) sẽ tải xuống un used.png trong ví dụ sau:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>test</title>
        <style type="text/css">
            .unused {
                background: url(unused.png) no-repeat;
            }
            .used {
                background: url(used.png);
            }
        </style>
    </head>
    <body>
        <div class="unused used">
            hello world
        </div>
    </body>
</html>

11
Vâng, đó là bởi vì nó được tham chiếu. Vì vậy, tôi không chắc việc gọi nó là "không sử dụng" là thực sự hợp lệ ..
NotMe

@eentzel, vui lòng xóa "không sử dụng" khỏi div, làm lại bài kiểm tra và cho chúng tôi biết kết quả của bạn.
Anse
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.