xx市院门户网站建设方案汕头seo快速排名
2026/3/23 1:17:58 网站建设 项目流程
xx市院门户网站建设方案,汕头seo快速排名,网站怎么做百度能搜到,青岛推广信息Python HAR 一键生成页面性能测试报告 通过Python解析HAR文件并自动生成可视化的页面性能测试报告#xff0c;下面提供一套完整、可直接落地的实现方案#xff0c;涵盖HAR解析、性能指标提取、HTML报告生成全流程。 一、方案概述 HAR文件说明#xff1a;HAR#xff08;HTT…Python HAR 一键生成页面性能测试报告通过Python解析HAR文件并自动生成可视化的页面性能测试报告下面提供一套完整、可直接落地的实现方案涵盖HAR解析、性能指标提取、HTML报告生成全流程。一、方案概述HAR文件说明HARHTTP Archive是一种JSON格式的文件用于记录浏览器与服务器之间的HTTP请求/响应详情及页面加载性能数据可通过Chrome、Firefox等浏览器的开发者工具获取。核心依赖库haralyzer专门用于解析HAR文件提取性能指标和请求数据简化手动解析JSON的复杂度。jinja2轻量级模板引擎用于快速渲染HTML报告支持自定义报告样式和结构。jsonPython内置库辅助读取和解析HAR文件haralyzer底层也依赖此库。实现流程获取HAR文件 → Python解析HAR → 提取关键性能指标 → 渲染HTML模板 → 生成可视化报告。二、环境准备先安装所需依赖库执行以下命令pipinstallharalyzer jinja2三、关键步骤实现步骤1获取HAR文件浏览器操作以Chrome浏览器为例获取页面HAR文件打开Chrome浏览器访问需要测试的页面。按F12打开开发者工具切换到Network面板。勾选面板左上角的Preserve log保留日志。刷新页面或重新加载目标页面等待所有请求加载完成。右键点击Network面板中的任意请求选择Save all as HAR with content保存为.har格式文件如page_perf.har。步骤2Python解析HAR文件并提取性能指标编写Python脚本解析HAR文件提取核心页面性能指标如页面加载时间、DNS查询时间、TTFB等和请求详情。importjsonfromharalyzerimportHarParser,HarPagefromdatetimeimportdatetimedefparse_har_file(har_file_path): 解析HAR文件提取页面性能指标和请求数据 :param har_file_path: HAR文件路径 :return: 性能指标字典 详细请求列表 # 读取HAR文件try:withopen(har_file_path,r,encodingutf-8)asf:har_datajson.load(f)exceptFileNotFoundError:raiseException(f错误未找到HAR文件{har_file_path})exceptjson.JSONDecodeError:raiseException(f错误{har_file_path}不是合法的JSON格式HAR文件)# 初始化HAR解析器har_parserHarParser(har_data)# 获取页面信息若HAR包含多个页面取第一个页面har_pageshar_parser.pagesifnothar_pages:raiseException(错误HAR文件中未包含页面性能数据)target_page:HarPagehar_pages[0]# 提取核心性能指标单位毫秒perf_metrics{页面名称:target_page.page_titleor未命名页面,测试时间:datetime.fromtimestamp(int(target_page.start_time.timestamp())).strftime(%Y-%m-%d %H:%M:%S),页面加载总时间:round(target_page.page_load_time,2),# 页面完全加载时间DNS查询总时间:round(target_page.dns_time,2),# DNS解析总耗时TCP连接总时间:round(target_page.tcp_time,2),# TCP三次握手总耗时首字节时间TTFB:round(target_page.ttfb,2),# 服务器响应首字节时间请求发送时间:round(target_page.send_time,2),# 请求数据发送耗时响应接收时间:round(target_page.receive_time,2),# 响应数据接收耗时资源加载总时间:round(target_page.ssl_timetarget_page.send_timetarget_page.receive_time,2),总请求数:len(target_page.requests),# 页面总请求数量失败请求数:len([reqforreqintarget_page.requestsifreq.status_code400]),# 错误请求数静态资源数JS/CSS/图片:len([reqforreqintarget_page.requestsifreq.resource_typein[script,stylesheet,image]])}# 提取详细请求列表request_details[]forreqintarget_page.requests:request_info{请求URL:req.url,请求方法:req.method,状态码:req.status_code,资源类型:req.resource_typeorunknown,请求耗时ms:round(req.time,2),DNS耗时ms:round(req.dns_time,2),TCP耗时ms:round(req.tcp_time,2),TTFBms:round(req.ttfb,2),响应大小B:req.response_sizeor0}request_details.append(request_info)returnperf_metrics,request_details步骤3使用Jinja2渲染HTML报告模板先创建HTML模板文件命名为perf_report_template.html定义报告样式和结构!DOCTYPEhtmlhtmllangzh-CNheadmetacharsetUTF-8title{{ perf_metrics.页面名称 }} - 性能测试报告/titlestyle*{margin:0;padding:0;box-sizing:border-box;font-family:Microsoft YaHei,sans-serif;}.container{width:95%;margin:20px auto;}.report-header{text-align:center;padding:15px;background-color:#f5f5f5;border-radius:5px;margin-bottom:20px;}.metrics-card{background-color:#f8f9fa;padding:20px;border-radius:5px;margin-bottom:20px;box-shadow:0 2px 4pxrgba(0,0,0,0.1);}.metrics-card h2{color:#2c3e50;margin-bottom:15px;border-bottom:2px solid #3498db;padding-bottom:10px;}.metrics-table{width:100%;border-collapse:collapse;margin-top:10px;}.metrics-table th, .metrics-table td{border:1px solid #ddd;padding:12px;text-align:left;}.metrics-table th{background-color:#3498db;color:white;font-weight:bold;}.metrics-table tr:nth-child(even){background-color:#f2f2f2;}.warning{color:#e67e22;font-weight:bold;}.error{color:#e74c3c;font-weight:bold;}/style/headbodydivclasscontainerdivclassreport-headerh1{{ perf_metrics.页面名称 }} - 页面性能测试报告/h1p生成时间{{ generate_time }} | 测试时间{{ perf_metrics.测试时间 }}/p/div!-- 核心性能指标展示 --divclassmetrics-cardh2一、核心性能指标/h2tableclassmetrics-tabletheadtrth性能指标/thth数值/thth单位/thth说明/th/tr/theadtbodytrtd页面加载总时间/tdtd{{ perf_metrics.页面加载总时间 }}/tdtd毫秒ms/tdtd页面从开始加载到完全渲染完成的总耗时/td/trtrtdDNS查询总时间/tdtd{{ perf_metrics.DNS查询总时间 }}/tdtd毫秒ms/tdtd域名解析的总耗时越小表示解析越快/td/trtrtdTCP连接总时间/tdtd{{ perf_metrics.TCP连接总时间 }}/tdtd毫秒ms/tdtdTCP三次握手的总耗时反映网络连接效率/td/trtrtd首字节时间TTFB/tdtd{{ perf_metrics.首字节时间TTFB }}/tdtd毫秒ms/tdtd从请求发送到接收服务器首个字节的时间反映服务器响应速度/td/trtrtd总请求数/tdtd{{ perf_metrics.总请求数 }}/tdtd个/tdtd页面加载的所有HTTP/HTTPS请求数量/td/trtrtd失败请求数/tdtdclass{% if perf_metrics.失败请求数 0 %}error{% endif %}{{ perf_metrics.失败请求数 }}/tdtd个/tdtd状态码≥400的异常请求数量理想值为0/td/trtrtd静态资源数JS/CSS/图片/tdtd{{ perf_metrics.静态资源数JS/CSS/图片 }}/tdtd个/tdtd页面加载的核心静态资源数量/td/tr/tbody/table/div!-- 详细请求列表展示 --divclassmetrics-cardh2二、详细请求列表/h2tableclassmetrics-tabletheadtrth请求URL/thth请求方法/thth状态码/thth资源类型/thth请求耗时ms/ththDNS耗时ms/ththTCP耗时ms/ththTTFBms/thth响应大小B/th/tr/theadtbody{% for req in request_details %}trtd{{ req.请求URL }}/tdtd{{ req.请求方法 }}/tdtdclass{% if req.状态码 400 %}error{% endif %}{{ req.状态码 }}/tdtd{{ req.资源类型 }}/tdtd{{ req.请求耗时ms }}/tdtd{{ req.DNS耗时ms }}/tdtd{{ req.TCP耗时ms }}/tdtd{{ req.TTFBms }}/tdtd{{ req.响应大小B }}/td/tr{% endfor %}/tbody/table/div/div/body/html编写Python脚本加载模板并生成最终HTML报告fromjinja2importEnvironment,FileSystemLoaderimportosdefgenerate_perf_report(har_file_path,output_report_pathNone): 一键生成页面性能测试HTML报告 :param har_file_path: HAR文件路径 :param output_report_path: 输出报告路径默认当前目录 页面名称 _perf_report.html :return: 生成的报告路径 # 1. 解析HAR文件perf_metrics,request_detailsparse_har_file(har_file_path)# 2. 配置Jinja2模板环境# 获取当前目录模板文件需与脚本在同一目录current_diros.path.dirname(os.path.abspath(__file__))envEnvironment(loaderFileSystemLoader(current_dir))# 加载HTML模板templateenv.get_template(perf_report_template.html)# 3. 准备模板渲染数据render_data{perf_metrics:perf_metrics,request_details:request_details,generate_time:datetime.now().strftime(%Y-%m-%d %H:%M:%S)}# 4. 确定输出报告路径ifnotoutput_report_path:page_nameperf_metrics[页面名称].replace(/,_).replace(\\,_).replace(:,_)output_report_pathf{page_name}_perf_report.html# 5. 渲染并生成HTML报告withopen(output_report_path,w,encodingutf-8)asf:f.write(template.render(render_data))returnoutput_report_path# 主函数一键执行if__name____main__:# 配置参数HAR文件路径替换为你的HAR文件路径HAR_FILE_PATHpage_perf.har# 本地HAR文件# 可选指定输出报告路径# OUTPUT_REPORT_PATH my_page_perf_report.htmltry:# 生成报告report_pathgenerate_perf_report(HAR_FILE_PATH)# report_path generate_perf_report(HAR_FILE_PATH, OUTPUT_REPORT_PATH)print(f成功页面性能测试报告已生成{os.path.abspath(report_path)})exceptExceptionase:print(f失败{e})四、一键运行与使用1. 文件目录结构确保文件摆放如下├── page_perf.har # 你从浏览器导出的HAR文件 ├── perf_report_template.html # HTML模板文件 └── har_perf_report.py # Python脚本文件2. 执行脚本修改har_perf_report.py中的HAR_FILE_PATH为你的HAR文件名称如page_perf.har。在终端执行Python脚本python har_perf_report.py执行成功后当前目录会生成.html格式的性能报告如XXX_perf_report.html。3. 查看报告双击生成的HTML报告文件用任意浏览器打开即可查看核心性能指标页面加载时间、DNS/TCP耗时、TTFB等。所有请求的详细信息URL、状态码、耗时、资源类型等。异常请求状态码≥400会用红色标注便于快速排查问题。五、报告关键指标解读性能指标含义与优化方向页面加载总时间页面完全加载耗时越小越好优化方向减少资源体积、开启缓存、懒加载。DNS查询时间域名解析耗时优化方向使用DNS缓存、选择优质DNS服务商、减少域名数量。TCP连接时间TCP握手耗时优化方向使用HTTP/2/HTTP/3、开启TCP复用、缩短网络链路。TTFB首字节时间服务器响应速度优化方向优化服务器接口、使用CDN、减少后端数据库查询耗时。失败请求数异常请求数量理想值为0需排查4xx/5xx错误如接口异常、资源不存在。总请求数请求数量越多加载越慢优化方向资源合并JS/CSS合并、雪碧图、减少冗余请求。六、扩展优化支持多页面HAR修改脚本遍历har_parser.pages为每个页面生成独立报告。增加性能阈值判断在模板中添加阈值配置如页面加载时间3000ms标红警告。导出Excel报告结合pandas库将性能数据导出为Excel格式方便批量统计。添加图表可视化在HTML模板中引入ECharts生成请求耗时分布、资源类型占比等图表。总结核心流程HAR文件获取浏览器→ Python解析haralyzer→ 指标提取 → Jinja2渲染HTML报告。关键依赖haralyzer简化HAR解析jinja2实现灵活的HTML报告定制。一键使用替换HAR文件路径执行脚本即可生成可视化报告快速排查页面性能瓶颈。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询