php apc 和模板缓存之间的区别
大家好,我对 Apc 和模板缓存有点困惑。
我的意思是模板缓存类似于智能缓存功能。
基本上他们两个有什么区别
Hi guys im a bit confuse with Apc and template caching.
By i mean template caching is something like smarty caching functionality.
Basically what is the difference between both of them
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
APC缓存是将php脚本编译成可执行的二进制操作码并在以后使用。
简而言之,编译一次,存储到内存中,并可重复使用,直到生存时间结束或直到文件更新。
尽管有这种主要用途,APC 还可以用于将运行时变量存储到内存中(您可以将其视为访问同一页面的每个人的全局会话)。
虽然 smarty 缓存从技术上讲不是二进制操作码缓存,但 PHP 二进制文件仍然需要每次执行时将其转换为二进制操作码。
smarty 缓存的好处是它会将渲染的 HTML/输出存储到磁盘中(或者您可以将输出保存到 APC 中,这是第二种用法)
这意味着,它节省了执行周期而不是编译周期
APC cache is to compile php script into executable binary op-code and used it later.
In short, compile once, stored into memory, and reusable until time-to-live ended, or until file get updated.
Despite this major usage, APC also can used to store run-time variables into memory (you can treat this as global session for everyone accessing the same page)
While smarty caching technically is not a binary op-code cache, PHP binary still need to convert it to binary op-code every time it get executed.
What benefits of smarty caching as is it will stored the rendered HTML/output into disk (or you can save the output into APC, the second usage)
Which mean, it save the execution cycle instead of compilation cycle
ajreal的答案是一个很好的答案。我将添加以下内容:
Smarty 的模板缓存和 APC 的操作码缓存在不同级别上是相同的。如果您有一个 smarty 模板,并且在任何地方都没有进行缓存,那么(大致)执行该模板需要执行以下操作:
1) 运行(lex、parse 和 intepret)smarty 模板代码。最终结果是 PHP 代码。
2) 运行该 PHP 代码。这里的输出是php字节码。
3) 运行字节码。这里的输出是机器代码。 (除非有一些我不知道的中间步骤)。
4) 运行机器代码。
smarty 中的缓存会缓存步骤 1 的输出。APC
缓存步骤 2 的输出。
ajreal's answer is a good one. I'll just add the following:
Smarty's template caching, and APC's opcode caching, are the same thing at different levels. If you've got a smarty template, and no caching going on anywhere, here's (roughly) what needs to happen in order to execute the template:
1) Run (lex, parse, and intepret) the smarty template code. The end result is PHP code.
2) Run that PHP code. The output here is php bytecode.
3) Run the Bytecode. The output here is machine code. (unless there's some intermediate step I don't know about).
4) Run the machine code.
Caching in smarty caches the output from step 1.
APC caches the output from step 2.