某些网站(例如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
。
答案 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是一个由Python& Django提供支持的静态网站生成器.Hyde支持所有Django模板标签和过滤器,甚至还有一些自己的。内置的Web服务器+自动生成器提供即时刷新和无限灵活性......“
“Jekyll是一个简单的,支持博客的静态网站生成器。它需要一个模板目录,其中包含各种格式的原始文本文件,通过Markdown(或Textile)和Liquid转换器运行它,并吐出一个完整的,准备发布的静态网站,适合与您喜欢的网络服务器一起服务......“
“Blatter是一个用于创建和发布静态网站的小工具 从动态模板构建......“