6

我对网站建设很陌生。然而,在 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"-->
    

    可能的缺点是每个网页都必须允许包含,因此必须进行解析(这会减慢文件系统的速度)。安全对我来说不是问题。

你会推荐什么?有什么应该做的礼貌规则吗?上述任何方法是否存在兼容性问题?有没有更好的方法?

例如:我怀疑第二种方法(我现在正在使用)破坏了谷歌索引,所以只有我的主页被索引。(我不确定这是否属实)。

4

4 回答 4

6

这样做的方法是使用类似服务器端包含的东西。其他 Web 开发人员可能正在使用 PHP 或 Python 或某些模板系统,但最终的设计模式是 HTML 输出是重复的,但您的模板系统中的 HTML 不是。

您对 SSI 减慢渲染的担忧是没有根据的。SSI 速度非常快,并且 Web 服务器将采用与渲染一页相同的优化;它可以将其缓存在内存中并即时处理它。

鉴于您只是想避免重复的 HTML,SSI 听起来是一个不错的方法,尤其是如果您已经让它为您工作得很好。它的缺点是缺乏高级编程功能。但是速度基本上不是 SSI 的问题。这是目前最快的解决方案之一。它也不影响 Google 索引;Google 只看到输出的 HTML,而不是 SSI。SSI 是服务器端的。

于 2012-01-24T19:43:20.747 回答
1

为什么不使用 JQuery 菜单? http://archive.plugins.jquery.com/projects/plugins?type=44

于 2012-01-24T19:46:24.680 回答
1

在 HTML5 中,您可以使用 Object 标签轻松完成此操作,例如

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

您必须使用 css 指定位置、宽度和高度。因此,如果它是结构 html 而不是文本内容,您可以使用style="z-index:-1;position:absolute;top:0;left:0; width:100%;height:100%"

这似乎适用于最新的浏览器(在 Safari 和 Chrome 上测试)

与 SSI 相比的一些优势:

  • 客户端可以缓存经常重复的页眉页脚内容,从而减少带宽使用。
  • 您可以在编写页面时在浏览器中离线查看页面,无需任何服务器。
于 2012-03-14T01:22:07.953 回答
0

1.) 一种快速的管理方法是使用 DreamWeaver 模板。任何 HTML 块都可以制作成模板。模板可用于您网站上的任何页面。模板在 DreamWeaver 中作为资产进行管理。编辑模板,DreamWeaver 会更新您站点页面中使用该模板的所有位置。该工具不是免费的。其他免费技术如下:

2.) Velocity 模板引擎驱动 apache.org 网站上的大量页面。您可以使用 ANT 来生成您的网站。http://velocity.apache.org/engine/devel/webapps.html

3.) 如果您正在使用 Java 做任何事情……请查看 JFS 和 Facelets。 http://www.ibm.com/developerworks/java/library/j-facelets/

于 2012-01-24T20:08:34.747 回答