我有一个适用于Linux和Android的HTTP和HTTPs代理。 我有各种Android设备 - Nexus 5(CPU 2260,RAM 2Gb),Nexus 7(CPU 1200,RAM 1Gb)和Nexus 9(CPU 2300,RAM 2Gb)。
问题在于,虽然HTTP代理在所有设备上运行良好,但在使用HTTPs代理时,Nexus 7无法打开繁重的页面。
我假设这是由RAM和/或CPU短缺引起的。我可以在下面的代码中更改一些内容来修复它吗?我需要我的代理才能在弱设备上工作。
我的代码:
当我连接网站时,我致电:
void connection::inform_browser_ok() {
const std::string answer = "HTTP/1.1 200 Connection established\r\n\r\n";
ba::async_write(bsocket_, ba::buffer(answer),
boost::bind(&connection::browser_read_ssl,
shared_from_this(),
ba::placeholders::error,
ba::placeholders::bytes_transferred));
}
然后我收取回调费用:
void connection::browser_read_ssl(const bs::error_code& err, size_t len) {
if(!err) {
async_read(bsocket_, ba::buffer(bbuffer), ba::transfer_at_least(1),
boost::bind(&connection::server_write_ssl,
shared_from_this(),
ba::placeholders::error,
ba::placeholders::bytes_transferred));
}else {
shutdown();
}
}
void connection::browser_write_ssl(const bs::error_code& err, size_t len) {
if(!err) {
ba::async_write(bsocket_, ba::buffer(sbuffer, len),
boost::bind(&connection::browser_read_ssl,
shared_from_this(),
ba::placeholders::error,
ba::placeholders::bytes_transferred));
async_read(ssocket_, ba::buffer(sbuffer), ba::transfer_at_least(1),
boost::bind(&connection::browser_write_ssl,
shared_from_this(),
ba::placeholders::error,
ba::placeholders::bytes_transferred));
}else {
shutdown();
}
}
void connection::server_read_ssl(const bs::error_code& err, size_t len) {
if(!err) {
async_read(ssocket_, ba::buffer(sbuffer), ba::transfer_at_least(1),
boost::bind(&connection::browser_write_ssl,
shared_from_this(),
ba::placeholders::error,
ba::placeholders::bytes_transferred));
}else {
shutdown();
}
}
void connection::server_write_ssl(const bs::error_code& err, size_t len) {
if(!err) {
ba::async_write(ssocket_, ba::buffer(bbuffer, len),
boost::bind(&connection::server_read_ssl, shared_from_this(),
ba::placeholders::error,
ba::placeholders::bytes_transferred));
async_read(bsocket_, ba::buffer(bbuffer), ba::transfer_at_least(1),
boost::bind(&connection::server_write_ssl,
shared_from_this(),
ba::placeholders::error,
ba::placeholders::bytes_transferred));
}else {
shutdown();
}
}
有人可以告诉我 - 出了什么问题?我的代码如何修复?
更新1。 我无法重复之前没有加载页面的错误 - 现在我得到类似
的内容1)“此站点无法提供安全连接” - 我想在server_read_ssl中丢失了一些数据......或者联合了2个不同的缓冲区..
2)看起来很糟糕的页面 - (我可以猜到 - CSS没有加载)。