我已经为此工作了将近三天,没有取得好成绩。我想在Laravel完成这件事。但我正在寻找任何类型的好主意。
我的产品具有MSRP价格。自产品发布到每小时,每件产品的价格每天下降10%。 但我想展示每天的价格下降,如图所示。
以下是我尝试过的一些方法。他们似乎都不是很干净。
在数据库中添加1行并称之为价格。 - 编写一个CRON,它将在服务器上每小时运行一次,查看所有产品并在该表中设置新价格。但这意味着我将从服务器中使用大量资源。
在数据库中添加10个额外的行,并在添加产品时生成价格。然而,我有一个问题,试图弄清楚如何显示它是什么日子,并以红色突出显示。我猜我可以通过jquery做到这一点。不太了解但这会是一种方式吗?
从该数据库中提取产品,然后循环浏览每个产品并使用此代码生成表格和价格。但是,如果交通流量巨大,那将会吃掉很多服务器。
还有其他想法吗?任何有用的东西都可以帮助我简化这一点。
以下是我能够为3ed选项提供的代码。因为我不知道jquery我没有第二个。
$msrp = 29.59;
$dayposted = "2016-1-26";
$cDate = Carbon::parse($dayposted);
$today = $cDate->diffInDays();
$days = [];
$i = 1;
$percent = 0;
for($n=0 ;$n<10; $n++) {
setlocale(LC_MONETARY, 'en_US.UTF-8');
if ($i == $today) {
$day = array_add(['day' => 'Day '.$i], 'price' , number_format( $msrp * ((100-($i*10))/100),2, '.', ''));
$day = array_add($day, 'class', 'today');
$price = number_format( $msrp * ((100-($i*10))/100),2, '.', '');
}
elseif($i == 10) {
$day = array_add(['day' => 'Final'], 'price' , number_format( $msrp * ((100-($i*10))/100),2, '.', ''));
$day = array_add($day, 'class', '');
}
else{
$day = array_add(['day' => 'Day '.$i], 'price' , number_format( $msrp * ((100-($i*10))/100),2, '.', ''));
$day = array_add($day, 'class', '');
}
array_push ($days, $day);
$i++;
}
这也是我想要完成的事情。
答案 0 :(得分:1)
答案取决于你想要完成工作的时间(计算)。
我同意,如果您不需要,每次用户请求信息时进行计算都会明显浪费资源。 然而 ,只要您没有进行大量的迭代,查询或最糟糕的计算数据库中的事情,数学计算就不会非常密集。
话虽如此,如果你真的想确保这些计算不会让你的服务器陷入困境,我建议的解决方案就是在客户端上进行。
您将原始数据返回给客户端并计算浏览器的定价,这样计算就在服务器上完成,并且仅在请求时完成。但是,这可能不是一种选择,因为您可能不希望将定价方法公开给客户。尽管如此,一个简单的javascript函数只是根据now和发布日期之间的差异计算减少百分比,这将是最简单的。
无论如何,这可能是微优化的情况。如果您担心,请执行一些基准测试,看看您的服务器如何在负载下处理它。这是确定这种优化是否必要的唯一方法。