2012-01-24 30 views
5

Tôi khá mới xây dựng trang web. Tuy nhiên, có một số kinh nghiệm trong LaTeX và một số ngôn ngữ lập trình khác.Thực hành tốt để bao gồm một menu trong một trang web?

Tôi thật sự cố gắng và tái sử dụng mã vv Vì vậy, khi xây dựng trang web của tôi, tôi muốn "bao gồm" ví dụ menu ở các trang khác, thay vì sao chép-dán một cách rõ ràng trong.

Có một số cách tôi biết có thể làm điều này:

  • trình đơn là trang tĩnh, nội dung của bạn nằm trong iframe. Đây là cách tồi tệ nhất để làm điều này, vì nó phá vỡ rất nhiều thứ như back/forward etc ... (mà tôi biết có thể là mong muốn đối với một số người, nhưng không phải trong trường hợp của tôi).
  • Đây là những gì tôi đang sử dụng bây giờ là: tất cả các trang web bao gồm menu sử dụng iframe:

    <iframe src="menu.html" class="menu" height="100%" frameborder="0"></iframe> 
    

    nhược điểm phương pháp này là: menu không được nạp lại đúng khi người ta xem lại trang web của bạn , trừ khi bạn sử dụng một số kịch bản mà cụ cho trình duyệt để làm điều này:

    document.getElementById('some_frame_id').contentWindow.location.reload(); 
    
  • Đây là những gì tôi đã nghĩ đến việc kể từ khi máy chủ mới của tôi cho phép này: bao gồm các menu sử dụng SSI.

    < !--#include virtual="/menu.html"--> 
    

    Nhược điểm có thể là mọi trang web phải cho phép bao gồm và do đó phải được phân tích cú pháp (điều này làm chậm hệ thống tệp). An ninh không phải là vấn đề đối với tôi.

Bạn sẽ đề xuất điều gì? Có quy tắc lịch sự về những gì nên được thực hiện? Có phải vấn đề tương thích với bất kỳ phương pháp nào được mô tả ở trên không? Có phương pháp tốt hơn không?

Ví dụ: Tôi nghi ngờ phương pháp thứ hai (hiện tôi đang sử dụng) phá vỡ lập chỉ mục google, vì vậy chỉ trang chủ của tôi được lập chỉ mục. (Tôi không chắc chắn nếu điều này là đúng mặc dù).

+4

Đừng cố gắng tối ưu hóa sớm. Sử dụng SSI và, nếu có vấn đề về hiệu suất, hãy xem bạn có thể làm gì. Nhưng tôi cá là nó sẽ không bao giờ xảy ra. –

+0

Việc lập chỉ mục của Google không được cập nhật. Máy chủ bao gồm phần HTML trước khi gửi cho khách hàng, có thể là trình duyệt của ai đó hoặc một trong các trình thu thập dữ liệu của Google. Kịch bản bao gồm nhận xét 'bao gồm' sẽ không bao giờ được gửi. – bigblind

+0

@JBNizet: okay, tôi đọc trong [hướng dẫn này về cgi] (http://oreilly.com/openbook/cgi/ch05_02.html) rằng đây là một ý tưởng tồi. Tôi phải nói rằng tôi đã không nhận thấy bất kỳ vấn đề hiệu suất trong các trang mà tôi đã SSI. Có bất kỳ quy tắc/quy ước nào về cách đặt tên cho các trang (tiện ích mở rộng) không? Các trang hỗ trợ SSI của tôi được mở rộng '.shtml' ngay bây giờ, có vấn đề gì nếu tôi chỉ giữ mọi thứ' .html' (tôi biết điều này sẽ hoạt động, nhưng có ổn không khi làm)? – romeovs

Trả lời

3

Cách để làm điều này là sử dụng một cái gì đó như Server-Side bao gồm. Các nhà phát triển web khác có thể đang sử dụng PHP hoặc Python hoặc một số hệ thống tạo khuôn mẫu, nhưng cuối cùng mẫu thiết kế là đầu ra HTML được sao chép, nhưng HTML trong hệ thống mẫu của bạn thì không.

Mối quan tâm của bạn về việc hiển thị giảm tốc của SSI không có cơ sở. SSI cực kỳ nhanh và máy chủ web sẽ sử dụng cùng một tối ưu hóa nó sẽ hiển thị một trang; nó có thể lưu nó trong bộ nhớ và xử lý nó trên bay.

Vì bạn chỉ đơn giản là muốn tránh HTML trùng lặp, âm thanh SSI giống như một cách hay để đi, đặc biệt nếu bạn đã có nó hoạt động tốt cho bạn. Nhược điểm của nó là thiếu tính năng lập trình nâng cao. Nhưng tốc độ cơ bản không bao giờ là vấn đề với SSI; đó là một trong những giải pháp nhanh nhất hiện có. Nó cũng không ảnh hưởng đến việc lập chỉ mục của Google; Google chỉ thấy HTML được xuất, không phải SSI. SSI là phía máy chủ.

0

1.) Một cách nhanh chóng để quản lý việc này là sử dụng các mẫu DreamWeaver. Bất kỳ khối HTML nào cũng có thể được tạo thành một mẫu. Một mẫu có thể được sử dụng trong bất kỳ trang nào trên trang web của bạn. Mẫu được quản lý dưới dạng nội dung bên trong DreamWeaver.Chỉnh sửa mẫu và DreamWeaver cập nhật tất cả các vị trí mà mẫu đó được sử dụng trong các trang của trang web của bạn. Công cụ này không miễn phí. Các công nghệ miễn phí khác theo:

2.) Công cụ mẫu tốc độ điều khiển nhiều trang trên trang web của apache.org. Bạn có thể sử dụng ANT để tạo trang web của mình. http://velocity.apache.org/engine/devel/webapps.html

3.) Nếu bạn đang làm bất cứ điều gì với Java ... hãy kiểm tra JFS và Facelets. http://www.ibm.com/developerworks/java/library/j-facelets/

1

Trong HTML5 bạn có thể làm điều này một cách dễ dàng với thẻ Object, ví dụ:

<object data=menu_page.html type="text/html" style="usual css..." ></object> 

Bạn cần phải xác định vị trí, chiều rộng và chiều cao sử dụng css. Vì vậy, nếu đó là html cấu trúc chứ không phải là nội dung văn bản, bạn có thể đặt nó trong một lớp nền bằng style="z-index:-1;position:absolute;top:0;left:0; width:100%;height:100%"

Điều này dường như làm việc trong các trình duyệt gần đây nhất (tesing trên Safari và Chrome)

Một số ưu điểm so với SSI:

  • Máy khách có thể lưu trữ bộ đệm đầu trang được lặp lại thường xuyên, giảm sử dụng băng thông.
  • Bạn có thể xem các trang của mình ngoại tuyến trong trình duyệt khi bạn vứt chúng, mà không cần bất kỳ máy chủ nào.
Các vấn đề liên quan