您能帮我吗? 我开发了基于web的系统,它向服务器发送异步请求。服务器从数据库获取大数据并缓存它。它需要约5秒。接下来在高速缓存中调用服务器搜索,因此需要〜0.05秒。 第一次5秒是好的,但如果我一次发送5个以上的异步请求,每个线程创建缓存,因此首次需要超过20秒。 我该如何改进?使用异步调用进行缓存
0
A
回答
0
我以前有过这个,解决方法是将所有请求编组到一个队列中,或者在数据库/缓存中设置一个忙标志,以便后续请求知道某事正在处理这个问题。
所以首先请求标志为繁忙并执行请求。以下请求看到它很忙,并会等到标志不再被标记为繁忙。那些请求应该能够提取缓存的副本。
0
有趣的场景。但是,您尚未指定如何缓存信息以及如何运行代码。 如果你使用ASP.Net缓存(和WCF/Web服务),我不认为它支持像这样的更复杂的场景。 如果你想要解决一些想法(正如我所说的,只是想法,我以前没有尝试过),你可以尝试缓存状态为“NotCached”,“Caching”和“Cached”的标志。 请注意,如果两个请求完全同时完成,则可能会遇到并发问题。 如果未缓存,则启动该进程并将该标志设置为“缓存”。当您缓存时,您可以决定如何处理其他即将发生的请求。使用线程睡眠(我不会推荐)或去数据库,但不要再缓存。 当第一个请求完成缓存时,您将该标志设置为缓存并完成任务。 如果您使用的是其他技术,您可能会对请求进行排队,而缓存只处理一个请求。 如果您提供更多详细信息,它将有助于分析您的情况。
相关问题
- 1. 使用AjaxPro进行异步调用
- 2. 使用cljs-ajax进行异步调用
- 3. 在同步内进行异步调用
- 4. C#同步进行异步调用
- 5. 使用OAuth2改进异步调用
- 6. 如何在Lua中使用回调进行异步HTTP调用?
- 7. 从Oracle ADF进行异步调用
- 8. 从ASP.Net进行异步WebService调用MVC
- 9. 在ComponentDidMount上进行异步API调用
- 10. 进行异步在ASP.Net MVC调用3
- 11. Web服务进行异步调用
- 12. 异步foreach循环进行API调用
- 13. 使用Javascript进行缓存
- 14. 使用inherited_resources进行缓存
- 15. 使用UnitOfWork进行缓存
- 16. 异步进程调用
- 17. 如何使用异步回调进行同步操作?
- 18. 异步方法,不会进行异步调用
- 19. 异步缓存json
- 20. ASP.NET缓存异步
- 21. 使异步调用同步
- 22. 使异步调用同步
- 23. 进步多个异步跟踪调用
- 24. 使用异步js的异步并行调用llin
- 25. 如何在WP7中使用分派器进行异步调用?
- 26. 如何使用.NET进行多个异步调用?
- 27. 在MVC4上使用HttpClient进行异步调用
- 28. 如何使用cherrypy进行异步ajax调用?
- 29. 使用JQuery在SharePoint中进行异步调用
- 30. 使用AngularJS和Node.js进行异步调用