对 FreeMarker 的几个疑问(静态化,缓存等),求理我~

2016-02-03 02:12:20 +08:00
 solomaster
一直理解的页面静态化是首次访问动态生成 html ,再次访问就直接读静态的 html 文件了。
但是我看到 FreeMarker 的官方文档写的 freemarker 缓存的是模板文件 ftl ( http://freemarker.incubator.apache.org/docs/pgui_config_templateloading.html

那么也就是说 freemarker 并没有缓存 合并数据后的 html 文件吗? 不知道我理解对不对。
如果是这样的话,那每次访问 即便后端传来的数据是相同的,那么 freemarker 也要在内存里面再把数据和模板文件解析合并一次了?那这样岂不是增加 cpu 开销,还不如直接生成 HTML 文件到本地,直接读取文件的地址了。

另外就是上次我问了个类似的问题,新闻网站那么多新闻是如何处理静态化的呢?全部生成 html 在硬盘上,还是部分在内存里?还是用上面我提到的模板缓存?

求各位好汉指教……
2514 次点击
所在节点    问与答
7 条回复
kfll
2016-02-03 09:28:14 +08:00
然后你会发现每次模板解析的结果都是一样的,于是你把模板解析结果缓存起来了。

这样就可以了
lxjsmdc
2016-02-03 09:33:21 +08:00
看你的业务需求来选择
或者按照 sql 语录句弄成 md5 的文件名缓存查询结果起来备用
也有一种文件后缀是 shtml 可以了解一下
icegreen
2016-02-03 11:29:17 +08:00
如果你的 html 页面不会经常变动, 可以在 nginx 层对 html 做缓存啊;
solomaster
2016-02-03 16:47:22 +08:00
@kfll 是指的把生成的最终 HTML 代码都缓存在内存中了?不知道为什么模板引擎没有这个功能,应该是信手拈来的……
solomaster
2016-02-03 16:48:15 +08:00
@lxjsmdc 谢谢,原来可以这样弄,学到了。 shtml 貌似现在用的很少了。
solomaster
2016-02-03 16:49:39 +08:00
@icegreen 谢谢。前端缓存倒是了解。
kfll
2016-02-03 17:23:27 +08:00
@solomaster 不是,虽然不了解 freemarker 但是我猜测大概是这么工作的:

编译模板字符串得到 A (可以是个 lambda ),然后 A 处理模板数据再吐出 html

这个 A 是可以缓存的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255112

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX