2009-02-26 28 views
8

Khi làm việc trên các ứng dụng web trong ASP.NET, lý do để chỉ định một tệp như stylesheet.css.aspx thay vì chỉ định dạng stylesheet.css đơn giản là gì? Tôi đã thấy điều này được thực hiện trong các ứng dụng web khác nhau.Chỉ định .aspx ở cuối tệp css?

Nhà thiết kế web đã đề cập một điều gì đó về cách nó là một điều .NET và lưu trữ một biến toàn cầu cho trang ASPX nhưng tôi không thực sự hiểu, cũng không biết toàn bộ câu chuyện.

Điều này được thực hiện tại nơi làm việc của tôi cho một ứng dụng web lớn với các trang web khác nhau cho các quốc gia khác nhau. Điều này làm tôi thắc mắc, khi nào tôi sẽ tạo các ứng dụng web riêng biệt cho các quốc gia riêng biệt thay vì một ứng dụng web phục vụ các ngôn ngữ khác nhau? Có lý do hiệu suất, kiến ​​trúc hoặc kỹ thuật khác để làm như vậy không? Tôi có thể nghĩ ra một số lý do không công nghệ (ví dụ: cân nhắc về SEO).

+0

Lạ ... Tôi cũng muốn biết, tôi chưa bao giờ gặp phải một kỹ thuật như vậy. Có lẽ họ đang tạo động các nội dung bảng định kiểu? –

+0

Tôi chưa bao giờ gặp phải một sửa đổi mở rộng như vậy đối với các tệp css. Câu trả lời cho câu hỏi này nên được chiếu sáng. – Cerebrus

+0

bạn phải nhớ rằng tất cả mọi thứ trước khi cuối cùng. có chính xác không có gì để làm với phần mở rộng tập tin. Rõ ràng là người sáng tạo đang cố gắng chỉ ra đây là CSS nhưng thực tế đây là tệp aspx đầu tiên và quan trọng nhất. – annakata

Trả lời

14

Có lẽ biểu định kiểu không tĩnh và được tạo động trên máy chủ.

Kỹ thuật này có thể được sử dụng để cung cấp một biểu định kiểu khác bằng cách xem xét một số tham số (chẳng hạn như lựa chọn chủ đề người dùng hoặc một cái gì đó).

Làm rõ: Trong khi bạn có thể ánh xạ .css mở rộng trong IIS để được xử lý bởi ASP.NET. Nó có hai vấn đề:

  1. Tệp CSS tĩnh cũng sẽ được chuyển xuống thời gian chạy ASP.NET, điều này sẽ làm giảm hiệu suất nhỏ.
  2. Trong nhiều môi trường lưu trữ được chia sẻ, bạn không có bất kỳ điều khiển nào về ánh xạ xử lý IIS.

Trình duyệt web không quan tâm (ít nhất, chúng không nên quan tâm) về tiện ích hoặc bất kỳ điều gì khác về URL. Điều duy nhất họ nên quan tâm là tiêu đề Content-Type. Nó phải được đặt thành text/css; nếu không một số người trong số họ có thể khiếu nại.

+0

có, nhưng bạn chỉ có thể yêu cầu IIS xử lý tệp .css với aspnet_isapi.dll. không cần phải thay đổi phần mở rộng. – darasd

+1

Trong nhiều môi trường lưu trữ được chia sẻ, bạn không có quyền làm như vậy, và nó dễ dàng hơn vì nó có thể được thực hiện mà không cần bất kỳ thay đổi cấu hình đặc biệt nào. Trong khi tôi nghĩ rằng .aspx không phải là cách tốt nhất để đi, .ashx là khá OK. Điều quan trọng là đặt loại nội dung thành văn bản/css. –

+0

Bạn nên gọi một cách rõ ràng đặt loại nội dung trong phản hồi - nếu không một số trình xác thực sẽ khiếu nại rằng đó không phải là tệp CSS. –

3

Biểu định kiểu chỉ là tệp văn bản - bạn có thể chỉ định bất kỳ tiện ích mở rộng tệp nào bạn muốn miễn là kết quả trùng khớp <link> của bạn. Nói cách khác, điều này sẽ hoạt động:

<link type="text/css" rel="stylesheet" href="style.foobar"/> 

miễn là biểu định kiểu của bạn có tên đó. Tôi không thể nghĩ ra bất kỳ lý do nào để đặt tên biểu định kiểu với phần mở rộng .aspx vì nó gây hiểu lầm và gây nhầm lẫn. [Các bài đăng khác có giải thích tốt về lý do tại sao điều này có thể được sử dụng.]

+0

Điều này là đúng, nhưng, như devio chỉ ra, nếu bạn sử dụng một phần mở rộng được đăng ký với một xử lý trong đường ống IIS, những gì xảy ra trên máy chủ là hoàn toàn khác nhau. – cdonner

+0

Bạn hoàn toàn đúng - điểm tốt. –

0

Biểu định kiểu thường là tệp văn bản tĩnh, không có lý do gì để cung cấp một phần mở rộng .aspx trừ khi chúng được tạo động.

0

Nếu bạn đặt tên biểu định kiểu .aspx, nó sẽ được xử lý bởi công cụ ASP.Net thay vì đơn giản được phân phát dưới dạng tệp văn bản.

Khi bạn ở trong .Net, bạn có thể tự do viết CSS của mình khi đang di chuyển. Tôi muốn tham số css.aspx mặc dù, vì trình duyệt muốn cache các tệp CSS.

+0

Bạn có thể gửi tiêu đề Bộ nhớ cache-Kiểm soát với phương pháp Response.Cache.SetCacheability để giải quyết vấn đề bộ nhớ đệm. –

1

Như đã đề cập, nó cho phép máy chủ xử lý tệp dưới dạng tệp aspx. Nó sẽ nhổ ra css Tôi chắc chắn, nhưng sẽ cho phép bạn xử lý phía máy chủ. Trong ví dụ bạn đưa ra, nếu bạn có cùng một nội dung html cho các vùng khác nhau (có thể được dịch, nhưng cùng cấu trúc), thì bằng cách có một tệp css động, bạn có thể hoán đổi, ví dụ, hình nền.Nói chung đây được coi là một ý tưởng tồi, vì bạn nên thêm tên lớp khác nhau vào các phần tử html để giải quyết vấn đề này.

Một lý do phổ biến khác để thực hiện việc này là tránh sao chép các định nghĩa màu. Về mặt kỹ thuật, bạn có thể tránh điều này cũng bằng cách sử dụng tên lớp, nhưng nó trở nên khá khó chịu. Hầu hết mọi người muốn có một cái gì đó như:

define sitebordercolor #999; define sitebackgroundcolor #fff;

và sau đó trong CSS của họ, có thể làm:

.foo { border: 1px solid #sitebordercolor; background-color: #sitebackgroundcolor; }

Tuy nhiên, CSS doesn' t cho phép bạn làm điều đó. Vì vậy, bằng cách sử dụng các file ASPX, bạn có thể đạt được kết quả tương tự:

.foo { border: 1px solid <%=sitebordercolor %>; background-color: <%=sitebackgroundcolor %>; }

0

Mehrdad's answer được tại chỗ trên liên quan đến các tập tin CSS - đó là cách chúng tôi cho phép màu sắc năng động trên một số trang web của chúng tôi - có màu được xác định bởi một chuỗi truy vấn, kích hoạt page caching varying by that query string và ở đó bạn đi.

Để đối phó với các phần kiến ​​trúc của câu hỏi này:

Trong khi cân nhắc SEO muốn giới thiệu rằng nội dung cục bộ thường được phục vụ từ một máy chủ cục bộ và miền (ví dụ nội dung của Pháp trên một tên miền .fr ví dụ) này thường isn không thể. Trong điều kiện bảo trì, việc duy trì một trang web dễ hơn là nhiều - vì vậy bạn sẽ xây dựng nó một lần, tận dụng các tính năng của khung công tác để bật localisation (tệp tài nguyên, v.v), và sau đó bạn có thể triển khai đến một vị trí hoặc nhiều vị trí như bạn thấy phù hợp.

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