使用iframe来实现页眉/导航栏是一个好的做法吗?

7

使用iframe实现网站的header/navbar是否是一种好的做法?

我的网站大约有5,000个页面,全部都是静态HTML(没有使用任何内容管理器、PHP等)。我正在为每个页面添加一个位于顶部的导航栏,例如选项卡、面包屑或任何带有JS菜单的样式(确切的设计还未确定)。我的问题是,使用iframe是否是一种好的做法?(因此,所有5,000个页面将只需要一个指向header文件的短iframe,而不是在所有页面中重复同样的文本)。

我知道应该减少HTTP请求以提高速度,但这对我来说没关系。我可能会遇到其他问题吗?如SEO或其他技术问题吗?


3
五千页?我能问一下这是做什么的吗?在这个级别,我会考虑转向动态解决方案。我不想知道当需要进行微小更改时你会怎么做。 - Scorchio
1
这是关于编程的教程和博客,是我过去15年来一直在努力维护的xahlee.org网站。我基本上使用emacs进行编码并每天上传(使用rsync)。这就是为什么我想要使用iframe作为标题的原因,这样任何更改都可以只更改一个文件,而不是在所有页面上通过脚本查找/替换。目前不希望转换到内容管理器(时间,设计等约束)。 - Xah Lee
1
如果可能的话,可以考虑使用服务器端包含作为选项,因此您将在每个页面中添加一个#include行,而不是一个iframe。也有可能让Web服务器在实际内容之前和之后输出固定的HTML。这可能是可能或方便的。另外,如果有单个起始页面链接到所有这些页面,并且每个页面链接到其他页面,则可以考虑在iframe中显示页面本身,这意味着您只创建一个额外的起始HTML页面,其他页面保持不变。 - Kinjal Dixit
你担心实现动态解决方案需要花费的时间吗?我怀疑你通过实现动态解决方案会比不实现更省时间。五千个静态页面?...这让我感到恐惧。@_@ - David Thomas
【服务器端包含】@BinaryNights 如果我的头文件包含了所有的js脚本,如果我在所有文件中都包含头文件,那么就会重新加载,也就是说每次刷新都会重载一堆脚本!? - Shahid Ghafoor
3个回答

6
使用iframe来显示同一文档的部分并不是一个好的实践。考虑整个文档,这应该会给你答案。或者考虑到有些设备在遇到iframe时表现不佳。而且说到SEO很有趣。没有头部或底部(因此没有内部链接)的文档,或者只有导航指向其他iframe包装器的文档,都表现不佳。
如果您的目标是避免使用动态语言,那么考虑使用SSI(服务器端包含)如何?

有没有任何设备的例子与iframe不兼容?而且,我也不确定iframe具体存在什么问题。在我看来,iframe作为小部件的机制似乎越来越受欢迎...服务器端包含很有意思,但如果可能的话,我想避免使用它。(这意味着我必须处理服务器设置,而这通常不在我的控制范围内,而且我的一些HTML项目是可下载的独立书籍。) - Xah Lee
并非所有移动浏览器都知道如何处理iframe,而且SEO的损失已足以避免它们。通常情况下,您不需要更改任何设置即可使用SSI。您真的尝试过但失败了吗? - maus
如果我的头文件包含所有脚本,如果我在所有文件中显示/包含头文件,那么它会重新加载,这意味着每次头文件重新加载时都会刷新一组脚本!? - Shahid Ghafoor

2
您无需转向完全动态的解决方案。考虑这个简单的3步解决方案,假设您使用的是Apache。
1. 在根目录中添加一个名为.htaccess的文件,并在其中添加文本AddType application/x-httpd-php .html。这使得Apache解析HTML文件中的任何PHP代码。 2. 在每个页面的顶部放置<?php include('header.html'); ?>。 3. 创建一个单独的header.html页面,然后它将出现在其他所有HTML页面上。

我的头文件包含了所有的脚本,如果我在所有文件中都显示/包含头文件,那么它会重新加载,这意味着每次头文件重新加载时都会刷新一堆脚本!? - Shahid Ghafoor
@Shahid,是的,每次加载您的页面时,包含的头文件都会“重新加载”。但这与如果来自您的头文件的代码在主文件中没有区别。 - JakeParis
好的!但我想停止头文件的“重新加载”?但要包括! - Shahid Ghafoor
@Shahid,你不能用include实现那个功能。你需要研究更高级的技术。 - JakeParis

0

请不要使用iframes。 我担心您正在使用错误的方法。

您需要转向更高级的东西(没有真正复杂的)。 只有几种情况:

  1. 不是很懂编程 -> 尝试Joomla(http://www.joomla.org/) 非常容易,只需获取一个漂亮的 模板并创建文章(愚蠢的 CMS),以便构建那些工厂。 页面。
  2. 喜欢JAVA? 对 -> 尝试使用包含或平铺制作Web应用程序

我的头文件包含所有脚本,如果我在所有文件中都包含头文件,那么它会重新加载,这意味着每次刷新一组脚本时都会重新加载头文件!? - Shahid Ghafoor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接