So, here is what we fixed in code:
if (content.Contains("</body>"))
{
StringBuilder inline = new StringBuilder();
StringBuilder js = new StringBuilder();
StringBuilder css = new StringBuilder();
//inlinescript with tag <script type="text/javascript">
bool inlineScriptExist = content.Contains("<script type=");
while (inlineScriptExist)
{
int startTag = content.IndexOf(@"<script type=");
int endTag = content.IndexOf(@"</script>", startTag);
string script = content.Substring(startTag, endTag - startTag + 9);
string toReplace = content.Substring(startTag, content.IndexOf(">", startTag) + 1);
string inlinescript = script.Replace(toReplace, "").Replace("</script>", "");
inline.Append(inlinescript);
content = content.Replace(script, "");
inlineScriptExist = content.Contains("<script type=");
}
//inlinescript with tag <script>
inlineScriptExist = content.Contains("<script>");
while (inlineScriptExist)
{
int startTag = content.IndexOf(@"<script>");
int endTag = content.IndexOf(@"</script>", startTag);
string script = content.Substring(startTag, endTag - startTag + 9);
string inlinescript = script.Replace("<script>", "").Replace("</script>", "");
inline.Append(inlinescript);
content = content.Replace(script, "");
inlineScriptExist = content.Contains("<script>");
}
inlineScriptExist = content.Contains("<script src=");
//put js script src to bottom
while (inlineScriptExist)
{
int startTag = content.IndexOf(@"<script src=");
int endTag = content.IndexOf(@"</script>", startTag);
string script = content.Substring(startTag, endTag - startTag + 9);
js.Append(script);
content = content.Replace(script, "");
inlineScriptExist = content.Contains("<script src=");
}
Then, we finished a new plugin that will help a lot to get better results on Google PageSpeed Insights, you can get it here: https://www.nopcommerce.com/p/2046/pagespeed-insights.aspx