1,跟进anshy提出的加载慢问题,发现webkit会走内存缓存,而miniblink和chromium都不会走,只要是本地文件,每次都加载新的。另外miniblink可以加个优化,在firstlayout后才显示内容。不过还是无法达到webkit的速度,需要继续优化
2,跟进http://cul.qq.com/a/20160306/044906.htm乱码的问题。发现webkit在堆栈:
> WebKit.dll!WebCore::TextCodecICU::decodeToBuffer(wchar_t * target, wchar_t * targetLimit, const char * & source, const char * sourceLimit, int * offsets, bool flush, UErrorCode & err) 行 318 C++ WebKit.dll!WebCore::TextCodecICU::decode(const char * bytes, unsigned int length, bool flush, bool stopOnError, bool & sawError) 行 382 C++ WebKit.dll!WebCore::TextResourceDecoder::decode(const char * data, unsigned int len) 行 632 C++ WebKit.dll!WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter & writer, const char * data, unsigned int length) 行 45 C++ WebKit.dll!WebCore::DocumentWriter::addData(const char * bytes, unsigned int length) 行 225 C++ WebKit.dll!WebCore::DocumentLoader::commitData(const char * bytes, unsigned int length) 行 858 C++ WebKit.dll!WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader * loader, const char * data, int length) 行 700 C++ WebKit.dll!WebCore::DocumentLoader::commitLoad(const char * data, int length) 行 775 C++ WebKit.dll!WebCore::DocumentLoader::dataReceived(WebCore::CachedResource * resource, const char * data, int length) 行 881 C++ WebKit.dll!WebCore::CachedRawResource::notifyClientsDataWasReceived(const char * data, unsigned int length) 行 119 C++ WebKit.dll!WebCore::CachedRawResource::addDataBuffer(WebCore::SharedBuffer & data) 行 70 C++ WebKit.dll!WebCore::SubresourceLoader::didReceiveDataOrBuffer(const char * data, int length, WTF::PassRefPtr<WebCore::SharedBuffer> prpBuffer, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) 行 293 C++ WebKit.dll!WebCore::SubresourceLoader::didReceiveData(const char * data, unsigned int length, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) 行 269 C++ WebKit.dll!WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle * __formal, const char * data, unsigned int length, int encodedDataLength) 行 618 C++ WebKit.dll!WebCore::writeCallback(void * ptr, unsigned int size, unsigned int nmemb, void * data) 行 393 C++
里面,会把之前的内存缓存,然后解码的时候,会把上次的包加新的包传给icu以前解码,这样如果上次和本次的数据包刚好在汉字中间截断,就可以正确解码。blink貌似没这个功能。直接是在 BackgroundHTMLParser::appendRawBytesFromMainThread里。
3,狂野的风提的剪切板的两个问题,一个是没调用oleinint函数,一个是在写剪切板的时候没清空。
4,小H提的在公司内网代理导致curl上不了网的bug
5,Core 提的刷新加载不了百度首页图片的bug