HttpWebRequest可能会减慢网站速度

莱蒙克

使用Visual Studio 2012,C#.net 4.5,SQL Server 2008,Feefo,Nopcommerce

大家好,我最近在我们现有的网站中实施了一项新的评论服务。

当更改生效后的第一天,一切都很好。

从那以后,尽管向Feefo的销售发送一直没有进行,但是没有任何错误记录。

在Nop Commerce服务的OrderProcessingService.cs中,当确认订单已完成时,我将调用HttpWebrequest。这是代码。

var email = HttpUtility.UrlEncode(order.Customer.Email.ToString());
var name = HttpUtility.UrlEncode(order.Customer.GetFullName().ToString());
var description = HttpUtility.UrlEncode(productVariant.ProductVariant.Product.MetaDescription != null ? productVariant.ProductVariant.Product.MetaDescription.ToString() : "product");
var orderRef = HttpUtility.UrlEncode(order.Id.ToString());
var productLink = HttpUtility.UrlEncode(string.Format("myurl/p/{0}/{1}", productVariant.ProductVariant.ProductId, productVariant.ProductVariant.Name.Replace(" ", "-")));

string itemRef = "";

try
{
    itemRef = HttpUtility.UrlEncode(productVariant.ProductVariant.ProductId.ToString());
}
catch
{
    itemRef = "0";
} 

var url = string.Format("feefo Url",
login, password,email,name,description,orderRef,productLink,itemRef);

var request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = false;
request.Timeout = 5000;
request.Proxy = null;

using (var response = (HttpWebResponse)request.GetResponse())
{
    if (response.StatusDescription == "OK")
    {
        var stream = response.GetResponseStream();
        if(stream != null)
        {
            using (var reader = new StreamReader(stream))
            {
                var content = reader.ReadToEnd();
            }
        }
    }
}

因此,如您所见,它是一个简单的Web请求,可在订单上进行处理,所有产品变体均发送到Feefo。

现在:

  1. 自实施第15天(实施之日)以来,这一周都没有发生
  2. 该网站最近一直停滞不前。

var内容中的流和阅读器用于调试。

我想知道代码对您是否有任何可能与网站流程有关的标志?另请注意,我已经运行了一些SQL语句以查看是否存在任何死锁或较大的升级,到目前为止看来还不错,日志也只是正常的Bot日志记录而已。

任何帮助将非常感激!

编辑:还请注意此代码是在一个方法中被调用并包装在一个try catch中

更新:好了,别忘了“不发送”,那是因为我刚刚被告知我的代码上周回滚了

马可·雷吉拉(Marco Regueira)

在处理订单时调用另一个网站可能会降低性能,因为您正在调用不受控制的网站。您不知道需要多少时间。此外,GetResponse方法可能会引发异常,如果您没有在外部try / catch块中记录任何内容,那么您将无法知道正在发生什么。

执行此类任务的最佳方法是实现诸如“发送电子邮件”计划任务之类的内容,并在您有能力等待远程服务时发送数据。如果尝试,这很容易。如果升级nopCommerce代码库,则它更具弹性,并且更易于维护。

这是我做类似事情的方式:

  1. 避免修改OrderProcessingService:创建自定义的服务或插件,消耗OrderPlacedEventOrderPaidEvent(只需实现IConsumer<OrderPaidEvent>IConsumer<OrderPlacedEvent>接口)。

  2. 如果您此时不需要响应,请不要在处理请求时直接致电第三方服务。这只会延迟您的过程。在步骤1中创建的服务中,存储数据,然后将其发送给Feefo。如果您不介意在重新启动站点时丢失挂起的数据,则可以将数据存储到数据库或使用静态集合(例如,对于统计数据来说可以)。

  3. 实施第2点的最佳方法是添加一个新的计划任务实施ITask(请记住要在ScheduleTask表中添加一条记录)。只需恢复存储的数据即可进行处理。

  4. 添加一些日志记录。很简单,只需获取一个ILogger实例并调用即可Insert

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Intellij调试器缓慢:方法断点可能会大大减慢调试速度

来自分类Dev

Twitch API减慢网站速度

来自分类Dev

NOLOCK提示会减慢操作速度吗?

来自分类Dev

从IdentityDbContext <T>继承会减慢测试速度

来自分类Dev

Linux磁盘访问会减慢系统速度

来自分类Dev

通道会减慢读取速度吗?

来自分类Dev

ORDER BY子句会减慢查询速度吗?

来自分类Dev

SHA256可能会增加多线程速度吗?

来自分类Dev

删除后,可能会禁止robots.txt上的整个网站产生后果吗?

来自分类Dev

了解使用相同数量的天线和最快的连接控制可能会影响wi-fi速度的因素吗?

来自分类Dev

经常使用localStorage可以减慢我的网站速度吗?

来自分类Dev

php.net被列为可疑文件-访问此网站可能会损害您的计算机

来自分类Dev

苹果表示,他们可能会拒绝“ ...只是捆绑为Apps ...的网站”的应用程序

来自分类Dev

通用方法可能会引发异常

来自分类Dev

木筏:提交的条目可能会丢失?

来自分类Dev

findViewById()可能会产生NullPointerException

来自分类Dev

Haskell String可能会列出

来自分类Dev

Python可能会舍入错误?

来自分类Dev

结构对齐可能会浪费内存?

来自分类Dev

AMD FX 8350可能会过热

来自分类Dev

http可能会损坏下载吗?

来自分类Dev

可能会损失精度误差

来自分类Dev

可能会产生BigInteger值冲突?

来自分类Dev

iOS可能会泄漏对象属性

来自分类Dev

遍历行可能会“丢失”的行

来自分类Dev

木筏:提交的条目可能会丢失?

来自分类Dev

鼠标可能会影响光标吗?

来自分类Dev

Java:运行可能会阻塞的代码

来自分类Dev

Python,计算计算状态会减慢计算本身的速度

Related 相关文章

热门标签

归档