【发布时间】:2012-02-18 01:22:06
【问题描述】:
我对网站建设很陌生。然而,在 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"-->可能的缺点是每个网页都必须允许包含,因此必须进行解析(这会减慢文件系统的速度)。安全对我来说不是问题。
你会推荐什么?有什么应该做的礼貌规则吗? 上述任何方法是否存在兼容性问题?有更好的方法吗?
例如:我怀疑第二种方法(我现在正在使用)破坏了谷歌索引,所以只有我的主页被索引。 (不过我不确定这是否属实)。
【问题讨论】:
-
不要过早地尝试优化。使用 SSI,如果出现性能问题,然后看看你能做什么。但我敢打赌它永远不会发生。
-
谷歌索引没有被破坏。服务器在将 HTML 片段发送到客户端之前包含它,无论是某人的浏览器,还是谷歌的爬虫之一。永远不会发送包含“包含”注释的脚本。
-
@JBNizet:好的,我在this tutorial on cgi 中读到这是一个坏主意。我必须说我没有注意到我已经 SSI 的页面中的任何性能问题。是否有关于如何命名页面(扩展名)的规则/约定?我启用 SSI 的页面现在扩展
.shtml,如果我只保留所有内容.html会有问题吗(我知道这会起作用,但可以这样做)吗? -
@sys.stderr:是的,使用 SSI 不会破坏 google 索引,但它会使用 iframe 还是我弄错了?
-
这本书是 1996 年出版的。它是互联网时代的史前史。您在 Internet 上浏览的大多数页面,甚至是简单的博客,都是使用 PHP 或其他服务器端编程语言动态生成的,它们对服务器施加的负载比 SSI 大得多,但它们不会导致任何性能问题。 SSI 非常快。您不会注意到与纯静态页面有任何区别。