我有一些想法,但我无法证实。
让我们说我们需要HttpClient
课程。在每次通话中创建它都是公平的。此外,它建议have just single instance of HttpClient。
我想为HttpClient创建静态属性并在静态构造函数中初始化它。由于初始化是线程安全的,HttpClient本身是线程安全的,我们可以安全地使用它。
创建静态字段可节省Function的执行时间和内存使用量。但在这种情况下它是单身吗?据我了解AF can scale out instantly。这意味着当Azure决定扩展您的应用程序时,它将创建新的容器/ VM并平衡实例之间的负载。因此,在这种情况下,HttpClient字段将是容器/ VM范围内的单例,但不是应用程序之间的单例。
我的想法是:
即使在所有AF实例中,场不是单身,我们仍然会受益。我的想法是正确的还是使用它们的副作用。
答案 0 :(得分:4)
是的,你的结论是正确的。强烈建议缓存诸如HttpClient
之类的内容,不仅仅是因为内存问题,还因为它有助于保持较低的连接数(您可以轻松地达到运行的沙箱中的连接限制)。
实际上,运行时的每个实例都有自己的副本,但它仍然非常有用,因为运行时的给定实例可用于许多执行(在某些情况下是并发的,因此需要线程安全)。