我有以下代码从数据库生成图像,该图像可以缓存一个月。
我有一次机器人攻击,在一分钟内将图像加载了约3000次。当数据库服务器运行良好时,它破坏了我的Web服务器。 (此后,我开始使用云前端在边缘服务器上缓存,从而解决了该问题)
为什么此代码会导致Web服务器在负载下崩溃,因为它只是对LONGBLOB的简单索引查询。它会占用大量内存吗?
$file_id = 1;
//Gets file from database based on id SELECT * FROM files WHERE file_id = 1
$file = $this->Appfile->get($file_id);
$this->load->helper('file');
header("Cache-Control: max-age=2592000");
header('Expires: '.gmdate('D, d M Y H:i:s', strtotime('+1 month')).' GMT');
header('Pragma: cache');
header("Content-type: ".get_mime_by_extension($file->file_name));
echo $file->file_data;