![]() |
1
5
让我们分析一下性能: 我们为您的第一个解决方案命名(略有变化,见下文) 一 和你的第二个解决方案 b .
一个请求:
十个请求:
10000 000请求:
因此,第一个解决方案的性能更好。但您对最新数据的担忧是什么?根据以下文件
那么,发生的情况是:
您选择的数据是最新的。这与从磁盘重新读取模板,甚至重新解析模板无关。这就是模板背后的全部思想:一次磁盘访问,一次解析,多个动态最终结果。 上面引用的文档告诉我们另一件事:
这非常有用,因为您的
那么,现在该怎么办?
我不确定你是否应该在
编辑 :我重读了你的问题,我可能误解了你: 如果模板本身仍在开发中,那么是的,您必须在每次请求时阅读它,以获得最新的结果。这比每次更改模板时重新启动服务器更方便。对于生产,模板应该是固定的,只有数据应该改变。 对不起,如果我弄错了。 |
![]() |
2
3
千万不要在生产环境中读取和解析请求处理程序中的模板文件,这是最糟糕的(您应该总是避免这样做)。在开发过程中,这当然是可以的。 阅读此问题以了解更多详细信息: 你可以用多种方式来解决这个问题。这里我列出了4个示例实现。 1.具有“开发模式”设置您可以有一个常量或变量来告诉您是否在开发模式下运行,这意味着模板不会被缓存。 这里有一个例子:
2.在请求中指定(作为参数)是否需要新模板
开发时,可以指定一个额外的URL参数,指示读取新模板而不使用缓存的模板,例如。
实施示例:
3.根据主机决定
您还可以检查请求URL的主机名,如果是
实施示例:
4.检查上次修改的模板文件您还可以在加载模板文件时存储模板文件的上次修改时间。无论何时请求模板,都可以检查源模板文件的上次修改时间。如果它已更改,则可以在执行之前重新加载它。 实施示例:
|
![]() |
grandmasternik · 缺少文件或方法 2 年前 |
![]() |
nvh · 无限期运行Go例程(完成后重新启动) 2 年前 |
![]() |
Gabe Tucker · 无法在golang中分配接口对象指针 2 年前 |
![]() |
kepemo2494 · 如何使用docker运行golang? 2 年前 |
![]() |
muthermutton · 为什么我的切片在追加时没有更新?[重复] 2 年前 |
![]() |
nos · 将Golang二进制文件读入切片数据,结果为零 2 年前 |
![]() |
Tono Nam · 指向同一内存位置的两个不同类型的对象 2 年前 |