我有一个相当 CPU 密集型的网络应用程序(它基本上是字典的集合,但它们不仅仅是简单的字典,它们做了很多事情,无论如何这并不重要)。因此,在 CPU 密集型 Web 应用程序中,您会遇到扩展问题,同时用户太多,并且响应速度很慢。
我的应用程序的流程是这样的:
js -> ajax 调用 -> php -> vb6 dll -> vb6 代码查询字典并执行 CPU 密集型工作 -> 回复 php -> 回复 js -> html div 使用新内容进行更新。显然在带有 IIS 7.5 的 windows 环境中。PHP 仅作为访问 .dll 的一种方式,没有其他任何作用。
回复/显示的内容是 html 格式的文本。该应用程序有许多 php 文件,它们在 .dll 中调用不同的函数。
因此,为了避免为每个请求调用 vb6 dll,这是 CPU 密集型部分,我正在考虑这样做:
示例 ajax 请求:
php file: displayconjugationofword.php
parameter: word=lol&tense=2&voice=active
因此,当用户向 displayconjugationofword.php 发出上述请求时,我调用了 vb6 dll,然后在将回复返回给客户端之前,我可以在 MYSQL 表中添加这样的请求数据:
filename, request, content
displayconjugationofword.php, word=blahblah&tense=2&voice=active, blahblahblah
因此,下次用户发出完全相同的 ajax 请求时,displayconjugationofword.php 代码不会调用 vb6 dll,而是首先检查 mysql 表以查看请求是否存在,如果存在,则从那里获取它。
所以这个 mysql 表的大小会逐渐增长,达到 3-4 百万行,并且随着请求的东西在数据库中的机会的增加,它也会增长,理论上这应该比执行cpu 密集型调用(每个任何地方)更快从 50 到 750 毫秒长)。
你认为这是实现我想要的好方法吗?或者当 mysql 表达到 3-4 百万个条目时,它也会变慢吗?
提前感谢您的意见。
编辑
我知道 iis 输出缓存,但我认为它在我的情况下没有用,因为:
1) AFAIK 它只在 .php 文件变得“热”时缓存它(许多查询)。
2)我确实有一些调用vb6的.php文件,但每次回复都是随机的。