2010-09-05 33 views
16

Khi tôi làm mới trang web của tôi trong vòng chưa đầy 2-3 phút, Firebug cho thấy những yêu cầu này đẹp:cache CSS và JS file

1. /core.css   304 Not modified 
2. /core.js   304 Not modified 
3. /background.jpg 304 Not modified 

NHƯNG khi tôi làm mới sau> 3 phút, tôi nhận được:

1. /core.css   200 OK 
2. /core.js   200 OK 
3. /background.jpg 304 Not modified 

Tại sao tệp CSS và JS của tôi lại được tải xuống và hình ảnh không?

Tôi đang sử dụng ASP.NET MVC 3, TÔI KHÔNG sử dụng [OutputCache], và trong thư mục /Content tôi (nơi mà tất cả css, js và img sống trong thư mục con) Tôi có Web.config này:

<configuration> 
    <system.webServer> 
     <staticContent> 
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" /> 
     </staticContent> 
    </system.webServer> 
</configuration> 

chỉ đặt tiêu đề HTTP Cache-Control: max-age=86400 CHỈ. Vì vậy, về cơ bản CSS, JS và hình ảnh được xử lý theo cùng một cách, nhưng bằng cách nào đó CSS ​​và JS không được lưu trữ trong một khoảng thời gian dài hơn ... tại sao vậy?

+0

Tại sao bạn không sử dụng '[OutputCache]'? –

+0

Vì đây là nội dung tĩnh. Ở đây tôi quan tâm đến bộ nhớ đệm nội dung tĩnh, tôi nghi ngờ rằng nó có bất cứ điều gì để làm với ASP.NET MVC, nhưng tôi đã đề cập nó bởi vì tôi không biết tất cả mọi thứ và có thể có một số giải pháp ... – Darmak

Trả lời

12

Hy vọng rằng điều này sẽ giúp: http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache

Yếu tố <clientCache> của phần tử <staticContent> xác định tiêu đề HTTP bộ nhớ cache liên quan đến IIS 7 và sau đó gửi cho các khách hàng Web, kiểm soát cách Web client và server proxy sẽ bộ nhớ cache nội dung IIS 7 và sau đó trả lại ...

+0

Nó đã giúp, cảm ơn. – jcolebrand

+0

Các hiệu ứng của việc bật tính năng này là rất lớn nếu bạn đang sử dụng jQuery với một vài trình cắm khác nhau, ví dụ: jqGrid, ở mức tối thiểu các thứ đang bay trong không quan trọng đã bị giảm. –

2

Điều này xảy ra với IIS hoặc với máy chủ web Visual Studio? một thời gian nhận thức được hành vi này trong khi phát triển (sử dụng máy chủ web VS), nhưng khi xuất bản nó trong IIS, điều này không xảy ra nữa.

+0

Thật không may IIS ... – Darmak

0

Đây có phải là lỗi trong Firefox được mô tả here không?

Bạn có thể kiểm tra điều này bằng cách mở cùng một trang trong một trình duyệt khác và kiểm tra những gì được tải bằng cách sử dụng Fiddler hoặc một số công cụ khác.

+0

Tôi chỉ nhận thấy rằng lỗi này đã được giải quyết tại 2010-05-09. Vì vậy, sửa chữa này có thể được trong phiên bản mới nhất của FF. – Peter

+0

Tôi có phiên bản mới nhất :) – Darmak