0

一些网站,例如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.

4

3 回答 3

4

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

例如:

/cat/5666/electric-guitars.html

可能改写为:

/cat.php?id=5666

测试这个的一个快速技巧是去/cat/5666/foo.html

在这种情况下,使用.html可能是为了隐藏在他们的网站上使用了什么样的脚本,作为一种通过隐蔽的弱安全措施。

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

于 2012-05-18T12:30:13.150 回答
0

从某种意义上说,您所描述的是缓存。通过缓存,您的应用程序将仅在其内容发生更改时生成页面(甚至部分页面)。Rails 内置了很多缓存功能,您可以对其进行调整以满足您的需求。首先阅读关于缓存的 Rails 指南,该指南描述了 Rails 的功能以及常见的附加组件。谷歌搜索“Rails 3 缓存”——那里有大量信息。最后,您可以将软件添加到执行额外缓存的服务器堆栈,例如 Squid 和 Varnish。使用正确的工具(和研究),您可以获得静态网站 95% 的好处,而无需手动将您的网站变成准静态的 Frankenapp。

于 2012-05-18T13:10:17.290 回答
0

我终于找到了这篇博文,其中指出了一些可以满足我需求的工具。我在这里添加它只是为了将来参考:

海德

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

杰基尔

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

布拉特

“Blatter 是一个小型工具,用于创建和发布由动态模板构建的静态网站……”

于 2013-05-17T09:21:54.557 回答