2011-10-28 32 views
16

Chúng tôi đang thực hiện thay đổi đối với nhân vật chính và tôi đang tranh luận về lợi ích của việc thay đổi tên hoàn toàn hoặc thêm chuỗi truy vấn vào cuối.Có ai biết về bất kỳ vấn đề nào sử dụng chuỗi truy vấn trong tệp CSS không?

Có logic để giữ phiên bản cũ hỗ trợ bộ nhớ cache của Google, archive.com, v.v. nhưng nó cũng sẽ sạch hơn nhiều trên hệ thống của chúng tôi nếu tôi chỉ chỉnh sửa tệp và thêm chuỗi truy vấn vào CSS gọi điện hình ảnh:

#element-id { background-image: url('my-sprite.png?version1'); } 

Câu hỏi của tôi là, có ai biết bất kỳ vấn đề nào về trình duyệt bằng cách sử dụng truy vấn bộ nhớ cache chuỗi trong tệp CSS không?

Nghi ngờ của tôi là trình duyệt xử lý yêu cầu hình ảnh css giống như cách từ tệp CSS hoặc qua HTML, do đó, miễn là máy chủ của tôi thể hiện thông tin tiêu đề chính xác, tôi nên OK.

+1

Dường như Stack Overflow thực hiện chính xác điều tương tự với sprites của họ, vì vậy có ít nhất một trường hợp. Kiểm tra [CSS file] (http://cdn.sstatic.net/stackoverflow/all.css?v=2b9549b94105): 'background-image: url (" img/sprites.png? V = 4 ")' –

Trả lời

1

Trừ khi trình duyệt bị hỏng nghiêm trọng, sẽ không có gì sai. Giả sử bạn muốn sử dụng một tệp động, chẳng hạn như url('/layout.php?section=1') hoặc một cái gì đó. Chuỗi truy vấn là loại bắt buộc ở đó, vì vậy nếu trình duyệt không hoạt động, nó sẽ bị hỏng khá nặng.

+0

I đã không bao giờ nhìn thấy các tập tin năng động trong css trước đây, vì vậy đã không nhìn thấy một tiền lệ. Bạn có biết ví dụ về ai đó đang sử dụng nó không? –

+0

@StevePerks: Tôi đã sử dụng chuỗi truy vấn cho kích thước hình ảnh 'url (img.jpg? W = 200)' trong một thời gian và không gặp phải bất kỳ sự cố nào. Tôi không thể thấy bất kỳ lý do nào tại sao lại có vấn đề, một URI là một URI là một đường dẫn đến một tài nguyên - ngữ cảnh không quan trọng. Điều mặc dù bộ nhớ cache - Tôi không chắc chắn ... –

+0

Cảm ơn Wesley - liên kết đến Stack Overflow sử dụng nó là vàng !!! WRT caching, có những bài viết trên mạng rằng các trình duyệt sẽ xem xét các tệp hình ảnh và tệp văn bản dưới dạng bộ nhớ cache theo mặc định và bất kỳ thứ gì có chuỗi truy vấn không được lưu vào bộ nhớ cache. Tuy nhiên, họ sẽ lắng nghe thông tin tiêu đề đến từ máy chủ, vì vậy bạn phải cẩn thận rằng bộ nhớ cache của bạn không thực sự phá vỡ bộ nhớ cache toàn bộ thời gian! –

0

Sự cố duy nhất bạn có thể gặp phải là tệp css có xu hướng được lưu vào bộ nhớ cache nhiều hơn mức bạn có thể muốn. Nếu đầu ra của my-sprite.png?version1 sẽ thay đổi thường xuyên, nó sẽ được đặt tốt hơn trên chính trang đó.

+1

Tệp CSS này cũng bị lưu vào bộ nhớ cache mỗi lần thay đổi –

20

tl; dr Sử dụng thông số truy vấn không phải là giải pháp 100%.

Về cơ bản có hai vấn đề khi sử dụng các đường ống dẫn tài sản:

  1. Đảm bảo nguồn lực của bạn được lưu trữ khi bạn muốn họ
  2. hủy bỏ hiệu lực bộ nhớ cache khi bạn rev file.

Thông số chuỗi truy vấn đôi khi sẽ khiến mạng hoặc trình duyệt không lưu vào tài nguyên của bạn. Hơn nữa như ông Ailen chỉ ra "cách tiếp cận chuỗi truy vấn là không đáng tin cậy cho các khách hàng phía sau một máy chủ proxy Squid" vì vậy nó có thể tôi không đáng tin cậy cho busting bộ nhớ cache là tốt. Về cơ bản bạn không muốn phải dựa vào cấu hình của người khác.

Một vài tài liệu tham khảo:

  • Rails Guides: Asset Pipeline - Các Rails Asset đường ống được xây dựng trên Sprockets một dự án đã được tập trung vào giải quyết các loại vấn đề trong một vài năm tốt bây giờ. Họ đặc biệt nhấn mạnh rằng "Không phải tất cả bộ đệm sẽ lưu trữ nội dung đáng tin cậy trong đó tên tệp chỉ khác nhau theo tham số truy vấn".

  • Steve Soulders Article on revving assets - Steve Souders là một chuyên gia về hiệu suất web và tác giả cuốn sách O'Reilly "Trang web hiệu suất cao" đã viết bài viết này được đề cập đến trong hướng dẫn Rails cho phép sử dụng tên tệp quay vòng để tránh sự cố với những người đứng sau proxy máy chủ.

  • HTML5 Boilerplate Suggestion - Dự án Boilerplate HTML5 được duy trì bởi Paul Irish và Nicolas Gallagher đáng kính sử dụng .htaccess về cơ bản tạo bộ lọc để thực hiện việc đổi tên tệp. Họ đặc biệt khuyên bạn nên sử dụng đổi tên tập tin thay cho các phiên bản chuỗi truy vấn.

+0

Tài nguyên khác https: //developers.google.com/speed/docs/best-practices/caching?csw=1#LeverageProxyCaching – michieljoris

+1

Liên kết Boilerplate HTML5 bị hỏng. Điều gần nhất tôi có thể tìm thấy là changeset trong đó điều này đã được thêm vào dự án H5BP: https://github.com/h5bp/html5-boilerplate/commit/e81479ba2f7d0fc386448baa5edea5d0e1116c63. – blachniet

+0

Điều tốt là wiki có quyền kiểm soát phiên bản: https://github.com/paulirish/html5-boilerplate/wiki/cachebusting/e58c07be9f0a43da08e766b21514f81ece24fa17 – mpen

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