2009-05-06 26 views
11

Tôi có một trang web thương mại điện tử có khoảng 8 tệp CSS được liên kết từ tiêu đề - dẫn đến 8 yêu cầu http riêng biệt cho máy chủ. Tôi hợp nhất tất cả các tệp CSS thành 1 tệp lớn, tạo ra tệp 67kb (!) - để cắt giảm các yêu cầu http xuống 1 đối với các tệp css của chúng tôi.@import trong CSS có dẫn đến các yêu cầu http bổ sung không?

Tôi đang tìm kích thước này một tệp CSS một chút không thể quản lý được trong thực tế tôi đang thực hiện cập nhật trên trang web liên tục. Mối quan tâm của tôi là người dùng của tôi có thể bắt tôi cập nhật và xem trang NON-style khi di chuyển từ trang này sang trang khác - 67kb vẫn mất 2-3 giây trước khi nó được đặt thành công trên máy chủ từ xa qua FTP .

Câu hỏi của tôi là: việc sử dụng @import trong tệp CSS lớn này để chia nhỏ tệp thành các kích thước nhỏ hơn (trong tệp CSS) đưa chúng ta trở lại 8 yêu cầu http gốc khi các trang được tải ? Hoặc là @imports trong CSS xử lý khác nhau bằng cách nào đó?

Trả lời

12

Vâng, bạn sẽ quay lại yêu cầu cho mỗi bản định kiểu trong khi sử dụng @import.

Đặt cược tốt nhất của bạn là rút gọn và hợp nhất css thành một tệp duy nhất để triển khai. Nhưng bạn vẫn có thể phát triển với các tệp riêng biệt.

+0

cảm ơn bạn - Tôi lo sợ nhiều. :( tôi đã cố gắng giảm thiểu - nhưng nó đã phá vỡ trang web vì lý do gì. Tôi sẽ phải cung cấp cho một thử khác và có lẽ nhìn vào TẠI SAO nó đến xa nhau.Cảm ơn rất nhiều –

+0

hợp nhất vào một tập tin css duy nhất có khả năng sẽ cung cấp cho bạn một lợi ích lớn hơn (1 http yêu cầu) hơn cạo một vài byte off với minifying, tôi sẽ tập trung vào tập tin duy nhất để triển khai đầu tiên –

+0

Khi bạn nói "tập trung" - bạn có nghĩa là cắt giảm trên "sưng lên" trong CSS? Tôi có một sự hiểu biết khá tốt về CSS và các phím tắt để cắt giảm mã dư thừa - vì vậy tôi đã "cắt" rất nhiều chất béo đã có. Có điều gì khác mà bạn có thể có nghĩa là không? –

3

Trình duyệt phải lấy dữ liệu bằng cách nào đó, vậy làm sao nó không thể sử dụng một yêu cầu http khác? ;-)

Cũng có thể, bạn sẽ được hưởng lợi từ bộ nhớ đệm của trình duyệt nếu bạn chỉ thay đổi một tệp và bảy tệp còn lại không thay đổi.

Bạn có thể thử đánh hơi một kết nối giữa máy khách và máy chủ và xem nó yêu cầu gì.

+0

cảm ơn bạn, Mike –

1

Có, yêu cầu riêng được phát hành cho mỗi câu lệnh @import.

Bạn có thể kiểm tra điều này bằng cách kiểm tra nhanh; viết một đoạn mã HTML, bao gồm tệp CSS nhập tệp CSS thứ hai. Xem kết quả trong một cái gì đó giống như bảng điều khiển mạng của Firebug cho thấy hai yêu cầu riêng biệt cho mỗi tệp CSS. Đó là bài kiểm tra tôi đã sử dụng để xác nhận câu trả lời này.

1

Nhập CSS không được xử lý khác với bất kỳ "bao gồm" nào khác trên trang, chẳng hạn như tham chiếu đến tập lệnh JavaScript bên ngoài. Tuy nhiên, bộ nhớ đệm của trình duyệt sẽ làm cho việc này không thành vấn đề ngoại trừ quyền truy cập đầu tiên vào trang web của bạn.

+0

yeah - i nghĩ rằng tôi sẽ quay trở lại để chia nhỏ chúng thành các tệp dễ quản lý hơn. :) đó là sự thật sau khi tải trang đầu tiên, nó không phải là một mối quan tâm. –

0

Nếu bạn có tệp CSS 67 Kb thì có gì đó lạ. Hãy nhớ rằng C trong CSS là dành cho CASCADING, và điều này có nghĩa là bạn không phải định nghĩa trong mỗi lớp tất cả các thuộc tính của mỗi một trong các thẻ có liên quan trong lớp.

Ví dụ, nếu bạn định nghĩa một < DIV id = "maincontainer" > như một container bạn có thể định nghĩa một lớp học để nó

#maincontainer {font-face:Arial,helvetica,sans;} 

Nó có nghĩa là nếu bạn tạo một sub-class của nó cho thẻ <P> như

#maincontainer P {color:darkgray;} 

Tất cả các <P> thẻ bên trong maincontainer DIV sẽ sử dụng phông chữ arial, helvetica, Sanz.

Cũng cố gắng tạo tệp CSS để chúng được sử dụng như thế nào trong các trang. Một tệp CSS duy nhất cho tất cả các trang web làm cho tải rất nhiều lớp học sẽ không được sử dụng trong một số trang. Phân chia và chinh phục.

+0

tôi đã nghĩ về điều đó - vấn đề duy nhất là trang web được định dạng mẫu và không dễ dàng tùy chỉnh trên cơ sở từng phần. Nhưng khi Eddie và những người khác đã chỉ ra - sau lần tải đầu tiên, bộ nhớ cache của trình duyệt sẽ xử lý phần còn lại. –

+0

Bạn cũng có thể tạo các CSS động. Nó có nghĩa là các tệp CSS được tạo ở phía máy chủ được tùy chỉnh cho từng phần của ứng dụng của bạn. – backslash17

3

Bạn có thể ngăn các yêu cầu thêm http bằng cách kết hợp các bảng định kiểu với .htaccess. Kỹ thuật này được giải thích trong HTML5 Boilerplate .htaccess. Nó hoạt động như thế này:

Trong .htaccess:

<FilesMatch "\.combined\.(js|css)$"> 
    Options +Includes 
    SetOutputFilter INCLUDES 
</FilesMatch> 

Trong style.combined.css:

<!--#include file="reset.css"--> 
<!--#include file="style.css"--> 

Bạn có thể sử dụng để kết hợp .js (hoặc bất kỳ phần mở rộng khác mà bạn đưa vào dấu ngoặc đơn.)

Tài liệu cho Tùy chọn + Bao gồm là here.

Các vấn đề liên quan