我可以“预生成”我的“动态”网站的所有可能的静态HTML页面吗?

时间:2012-05-18 12:27:24

标签: html ruby-on-rails search-engine generator static-html

某些网站(例如http://www.idealo.co.uk)似乎只提供static html,但其内容是动态的。

例如,如果我浏览某个类别,我会收到指向static html页面的链接:

http://www.idealo.co.uk/cat/5666/electric-guitars.html

现在,如果我应用自定义过滤器,我会再次获得一个似乎是static html的链接:

http://www.idealo.co.uk/cat/5666F456496-735760-1502100/electric-guitars.html

这是如何实现的?是否有任何框架有助于“预生成”所有可能的动态页面,这样每当给出新的输入时,页面已经存在(即static html已经可用)?

背景:我们为房地产提供了一个小型搜索引擎。我们的报废者每天更新一次优惠(内容在当天是静态的)。该内容可在Ruby-on-Rails网站上搜索。 随着流量的增加,性能成为一个问题。我想知道是否有任何框架/工具可以批量生成我们的所有搜索,以便我们可以提供static html

3 个答案:

答案 0 :(得分:4)

他们的网站不是动态的。他们使用网址重写(例如mod_rewrite)将输入网址转换为脚本可以满足的请求。

例如:

/cat/5666/electric-guitars.html

可能会改写为:

/cat.php?id=5666

测试此问题的快速诀窍是转到/cat/5666/foo.html

在这种情况下使用.html可能是为了隐藏在其网站上使用的脚本类型,作为一种通过默默无闻的安全措施。

为了解决您的问题 - 不,没有(简单)方法可以将所有可能的结果生成到静态HTML文件中。你正在寻找潜在的数十亿种排列。如果您遇到性能问题,请查看性能分析,缓存,查询优化等。

答案 1 :(得分:0)

在某种意义上,您所描述的是缓存。通过缓存,您的应用程序将仅在其内容发生更改时生成页面(甚至部分页面)。 Rails内置了许多缓存功能,您可以根据自己的需要进行调整。首先阅读描述Rails功能的Rails Guide on caching以及常见的附加组件。谷歌围绕“Rails 3缓存” - 那里有大量的信息。最后,您可以将软件添加到服务器堆栈中,以执行其他缓存,例如Squid和Varnish。使用正确的工具(和研究),您可以获得静态网站95%的好处,而无需手动将您的网站变成准静态Frankenapp。

答案 2 :(得分:0)

我终于找到了this blog post,它指向了一些我正在寻找的工具。我在这里添加它只是为了将来参考:

Hyde

“Hyde是一个由Python& Django提供支持的静态网站生成器.Hyde支持所有Django模板标签和过滤器,甚至还有一些自己的。内置的Web服务器+自动生成器提供即时刷新和无限灵活性......“

Jekyll

“Jekyll是一个简单的,支持博客的静态网站生成器。它需要一个模板目录,其中包含各种格式的原始文本文件,通过Markdown(或Textile)和Liquid转换器运行它,并吐出一个完整的,准备发布的静态网站,适合与您喜欢的网络服务器一起服务......“

blatter

“Blatter是一个用于创建和发布静态网站的小工具 从动态模板构建......“