4

PHP 有许多操作码缓存,据我了解,它们是处理应用程序缓存方面的脚本。经典asp有类似的东西吗,尤其是不需要组件安装的东西?

关于 IIS 缓存行为,从阅读here看来,该行为与某种预编译步骤有关,而不是与完成的页面有关。如果我错了,请纠正我

4

3 回答 3

3

到目前为止,查看您对此处答案的评论以及对问题的编辑,您似乎对缓存感到有些困惑。

我们可以谈论两种类型的缓存。

  • 操作码或模板缓存
  • 输出缓存

操作码或模板缓存是在将纯文本文件的原始脚本文件转换为可由脚本引擎执行的内存操作码集时发生的缓存。PHP 有一些额外的工具,允许在随后请求脚本文件时重复使用这样的一组操作码。类似地,ASP 在内存和磁盘上保留一个“已编译”操作码的缓存,以便它可以为同一脚本的后续请求提供服务,而无需再次执行整个解析过程。

输出缓存是发送到响应缓冲区的脚本生成的输出被缓存的地方,以便对相同 URL(以及可能匹配其他标头)的后续请求根本不会重新运行脚本,而是重新发送先前缓存的输出.


ASP 没有输出缓存功能,而 ASP.NET 有。我对 PHP 或其正常平台不够熟悉,无法评论是否可以使用这样的工具。

您可以在 IIS 管理器 (IIS6) 中配置 ASP 的“操作码”缓存(称为模板缓存)打开网站节点上的属性窗口,转到主目录选项卡并单击配置...,然后选择缓存选项选项卡。默认情况下,500 个“编译”页面将缓存在内存中,2000 个将缓存在磁盘上。


在对此答案的原始版本的评论中,您似乎在询问由 IIS 托管的 PHP 是否也会从模板缓存中受益。这将取决于如何将 PHP 添加到平台中。

我对 PHP 几乎一无所知,但我想它只是另一个 dll,IIS 脚本映射将扩展名为 PHP 的文件映射到。在这种情况下,它不会从 ASP 模板缓存中受益。

以下可能是虚构的,但只是为了完善图片:-

另一个不太可能的可能性是,如果 PHP 以某种方式添加为 ASP 脚本语言。在这种情况下,带有 PHP 扩展名的文件将被映射到 ASP.DLL,并且文件将包含 <%@ language="PHP" 或应用程序配置中的默认语言将设置为 PHP。在这种不太可能的设置中,ASP 将构建一个将被缓存的模板,但是该模板是否包含“编译”操作码等取决于 PHP。

于 2008-10-04T15:24:27.963 回答
2

这取决于您所说的“缓存”是什么意思。

在 IIS 6.0 中有模板缓存,如下所述(MS Windows 2003 TechCenter):

“ASP 处理包含 ASP 脚本的模板或模板文件。ASP 将这些模板存储在模板缓存中,然后为后续的客户端请求提供缓存的模板。缓存 ASP 模板增强了性能和可伸缩性,因为缓存的模板不会在每次被编译时都被编译。叫了。”

您可以在此处找到缓存的其他区别

这篇关于使用数据缓存提高 ASP 性能的文章介绍了一种简单的数据缓存机制:

“不幸的是,经典 ASP 中没有内置缓存系统,但通过使用 Application 对象来存储数据很容易构建。因此,本文中描述的技术可用于为升级的旧网站带来有用的性能增强数据库或将代码移植到 ASP.NET 不是一个可行的选择。”

于 2008-10-04T16:28:03.810 回答
1

也许这个类可以帮助你缓存一些东西。

http://www.webdevbros.net/2006/11/18/cache-object-for-classic-asp/

它不需要任何已安装的组件,并使用应用程序对象作为存储。因此,所有访问者都使用相同的缓存。您可以将它用于以下场景,例如:缓存繁重的 SQL 查询,...

于 2008-10-04T21:19:42.970 回答