我對網站建設頗爲陌生。但是在LaTeX和其他一些編程語言方面確實有一些經驗。在網站中包含菜單的良好做法?
我真的嘗試和重用代碼等,所以,建設自己的網站的時候,我想「包括」例如在其他頁面菜單,在明確的複製粘貼它代替。
我知道有幾種方法可以做到這一點:
- 該菜單是一個靜態頁面,您的內容位於iframe中。這是做這件事最糟糕的方式,因爲它打破了很多東西,比如後退/前進等等(我知道這對某些人來說可能是可以理解的,但對我來說不是這樣)。
這是我現在使用:每個網頁包括使用iframe菜單:
<iframe src="menu.html" class="menu" height="100%" frameborder="0"></iframe>
這樣做的缺點的方法是:在菜單沒有得到適當的重新加載,當人們重新審視你的網站,除非你使用一些腳本是明確告訴瀏覽器要做到這一點:
document.getElementById('some_frame_id').contentWindow.location.reload();
這是因爲我的新主機我想允許這樣的:包括使用SSI菜單。
< !--#include virtual="/menu.html"-->
可能的缺點是每個網頁都必須允許include,因此必須進行解析(這會降低文件系統的速度)。安全對我來說不是問題。
你會推薦什麼?有什麼應該做的禮貌規則? 上述任何方法是否存在兼容性問題?有更好的方法嗎?例如:我懷疑第二種方法(我現在使用它)打破谷歌索引,所以只有我的主頁被索引。 (雖然我不確定這是否是真的)。
不要試圖過早優化。使用SSI,如果出現性能問題,那麼請看看你能做什麼。但我敢打賭,它永遠不會發生。 –
谷歌索引不被蠶食。服務器在將其發送給客戶端之前包含這段HTML,無論是某人的瀏覽器,還是谷歌的抓取工具之一。包含'包含'評論的腳本將永遠不會被髮送。 – bigblind
@JBNizet:好的,我在[本教程中的cgi](http://oreilly.com/openbook/cgi/ch05_02.html)中讀到,這是一個壞主意。我必須說我沒有注意到我已經擁有SSI的網頁中有任何性能問題。是否有關於如何命名頁面的規則/約定(擴展名)?我的支持SSI的頁面現在擴展爲'.shtml',如果我只保留所有'.html'(我知道這會起作用,但可以這樣做),是否有問題? – romeovs