焦点

提升效率和用户体验,携程门票活动商品结构演进

字号+作者:益华科技来源:数据库2025-11-05 07:55:20我要评论(0)

作者简介 Kurtis,携程后端开发专家,关注性能优化、技术架构等领域。一、前言在电子商务平台上,商品结构起着至关重要的作用。它不仅承载着预订和服务流程中的商品信息,还在商户运营效率、平

作者简介

Kurtis,提升携程后端开发专家,效率关注性能优化、和用户体技术架构等领域。验携

一、程门前言

在电子商务平台上,票活品结商品结构起着至关重要的动商作用。它不仅承载着预订和服务流程中的构演商品信息,还在商户运营效率、提升平台可扩展性以及终端用户体验等多个维度产生显著影响。效率通过高度结构化的和用户体商品信息,平台能够运用数据分析和算法,验携更精准地推荐合适商品给目标用户群,程门更加高效地为买卖家用户创造价值,票活品结从而提升交易效率和客户满意度。动商

本文介绍了门票活动商品结构的演进和过程中的技术挑战。

二、背景与发展轨迹

2.1 发展历程:从低结构化到高度结构化

在线门票活动商品结构的优化是一个持续不断的过程,迄今为止,其发展可被分为以下四个主要阶段: 

图:门票活动结构演进过程

2019年及以前:该阶段主要有三种不同的商品结构:资源结构门票、产品结构门票和活动结构门票。这些架构主要注重通过商品品类系统(Product Category System)来快速扩展新的商品类目。然而,这种快速扩展过程缺乏足够的服务器租用抽象和标准化,导致信息结构化程度相对较低,存在大量非结构化文本字段。

2020年:三种主要的商品结构进行了合并和重构,以形成一个更加统一的、针对碎片化类旅游商品结构。同时,对国际化方案进行了优化。

2021年:在这一阶段,对商品的销售属性进行了标准化处理,以提升商品的可识别性和预订流程的用户体验。

2022年:进行了描述属性结构的调整,并引入了一个可扩展的属性元素库。此外,通过信息分层和集中式的POI属性信息管理,进一步提升了商品信息的结构化程度。

2.2 深度问题分析

回到2019年,随着业务的快速发展和多年的需求迭代,积累了系列需要系统性解决问题:

用户视角:大量重复的商品,商品信息冗余,特别是服务器托管在文本描述方面,导致用户难以快速了解产品的核心特点和价值。

图:重复的商品和大段的文本信息

商户视角:系统的复杂性令商户困惑,特别是在三种不同的商品结构之间选择时。此外,流量分配不均,优质商品经常被埋没,错失营销机会。

平台视角:由于信息管理工具不够强大,导致运营效率低下。同时,多语言支持方面存在的高翻译成本也是一个问题。

产研视角:需求响应缓慢,特别是在添加新功能时,由于需要在三种商品结构中都进行实现,加大了开发难度和兼容性风险。

商品结构的特性与局限性可归纳为两类问题: 

效率低:三类商品结构,迭代周期长,维护成本高

资源结构门票:这是一个只有资源层级信息结构化程度低的简单门票结构。它主要用于不区分销售属性的景区门票。云服务器提供商

产品结构门票:这个结构增加了一个SKU组合层,因此它有两个信息层级:产品和资源。这主要用于支持需要通过销售属性(如“场次”和“座席”)来组合多个资源的复杂门票。

活动结构门票:这是一个对标国外竞品高度结构化的商品结构,适用于活动品类和国际化商品。但受限于翻译时需要将结构化字段降级成文本,因此翻译成本相对较高。如果要将其他两类结构的商品放到国际站售卖需要重新上货,效率底下,两端的库存控制也没办法保证。

质量差:结构化程度低,信息分层管控能力差

结构化程度低:商品名称的文本信息不能得到有效的控制和约束,大量商品名称重复混乱,信息不能清晰的展示给用户。系统不能识别同质化商品,重复的商品在货架展示,用户无法区分商品的差异,决策困难。

信息分层管控能力差:各类景区提供的服务多样,例如演出的场次时间座席区域图,滑雪的计费规则,教练服务等信息,都来自商户录入的文本,同类信息多商户录入格式和内容没有规范,信息不清晰,质量不受管控,可读性差,用户阅读困难。

2.3 解决策略与规划

信息质量差和效率低下的问题必须系统性的解决才能更好支持未来的业务需求,商品信息结构要满足不同角色对门票活动业务的需求:

用户视角:目标是提供丰富、价格合适的产品选择,并确保商品信息清晰、准确。

商户视角:简化上货流程和运营任务,确保高质量商品有更多的营销机会。

平台视角:需要构建强大的信息管理工具以提高运营效率,并优化多语言支持以降低国际化成本。

产研视角:减少重复开发工作,提高响应速度,同时确保系统稳定和业务逻辑的一致性。

具体实施方案

基于对国内国际竞品的对比调研和多年的积累沉淀,需要做三方面改进:

商品结构整合:效率低质量差核心的原因多套结构和系统,需要废弃低结构化的商品结构,通过高结构化的系统支持不同类型门票活动品类的业务需求。

销售属性标准化:重复混乱多货架是因为商品多销售属性没有标准,结构化本质上就是标准的问题,标准化的信息可以帮助系统有效识别并帮助用户选择更合适的商品。

描述属性信息分层:信息层级决定了它的复用性和灵活性,通过判断信息归属,集中管控景区和票种上的描述信息,这将减少商户的录入负担,并提高信息准确性和可读性。

风险和挑战

系统结构的改造是对底层数据的重构和迁移,面临巨大的风险与挑战:

系统兼容性风险:新的商品结构需要能够兼容旧结构的独特业务场景和属性字段。为此,需要详细地分析现有数据使用场景,并仔细规划迁移过程。

系统依赖和项目范围:数据迁移会涉及多个上下游依赖,包括AI/BI等数据使用方,项目范围大。

大规模数据迁移的风险:由于需要迁移大量不同结构的数据,这个过程中存在着高风险,包括但不限于功能遗漏和依赖方兼容问题。

完成规划中定义的目标需要分阶段实施,每个阶段实现一个目标。

三、过程

3.1 商品结构整合

3.1.1 措施

在进行结构合并时,首要任务是确立一个能够最合理地支持业务需求的商品结构。在与国际和国内市场的竞争对手进行比较后,活动品类的结构化程度最高,SKU组合方式最灵活,信息分层最优。因此,我们采取以下层次和职责划分:

产品层:承载可复用给资源层的信息,如费用包含、使用方法、预订限制等。商户只需录入一次,即可在多个资源组合中复用。

套餐层: SKU的组合层,可通过不同景区/场地的售卖规则进行灵活组合,例如通过“场次”和“座席”组合出多种售卖单元。

资源层:SKU层,最小的售卖库存单元,包含价格和库存信息。

图:门票活动商品三层结构

确定了这三层商品结构后,接下来的步骤是多套系统的融合。出于控制项目周期和降低数据切换风险的考虑,我们采用以下三个步骤完成融合:

结构和功能对齐:

梳理出完整业务场景中必须保留的字段和功能,并在统一的结构中支持。需要对多套结构的每个字段进行梳理,制定方案时要考虑下游的使用方式和兼容性方案。

国际化结构升级:

在改造之前,信息的翻译是通过将结构化信息拼接成非结构化的文本信息,然后再进行翻译的。然而,这种方式导致如果拼接前的信息有变化,就需要重新翻译,无法复用,工作量大。为提升信息复用性,我们采用以下三类方案:

文字类:文字类信息包括结构化信息和文本信息,将结构化信息的id/name对应的各语言翻译内容以键值对形式存储。文本信息通过翻译系统保存译文。

语句类:将语句类信息作为文字类信息的组合,各语言元素分别处理。根据不同的locale设置不同语言的语序、单复数形式等格式,最后拼接输出。

图:语句类多语言

时间类:时间类字段以UTC时间和时区偏移量存储,根据使用场景转换为“当地”或“当前设备”的时区,例如最晚退订时间。

商户的工作时间需要结构化,并与不同国家的节假日工作等信息关联,以可复用的模板形式连接到商品中。

在信息输出时,根据当前的locale获取对应的译文来替换原始录入语言。具体流程如下图所示:

图:国际化实时翻译流程

数据搬迁和系统切换:

在新的结构支持功能和信息字段后,最具挑战性的任务是切换过程。切换包括数据切换和系统切换两个方面:

数据切换:将不同结构的数据根据字段映射规则和兼容逻辑迁移到新系统中。在这个过程中,面对几十万产品的搬迁,如果兼容逻辑处理不当,可能会影响下游,甚至引发系统故障。

系统切换:统一的数据结构和标准的上架流程让商户不再需要理解三套不同结构的操作方式。但是合并后的系统在功能上与原系统可能存在差异。在切换之前,需要调研合并后流程对商户接受度的影响,是否对其工作效率产生积极影响。在切换过程中,需要持续收集商户的反馈,及时解决遇到的问题,并迅速响应上线商户的合理改进建议。

搬迁过程由系统完成,并提供高质量的搬迁工具。搬迁工具的设计关注以下几个方面:

避免问题发生:通过全量分析模拟搬迁的数据处理过程,提前发现问题。在搬迁过程中,共执行150次全量分析,发现了20多个问题,涉及兼容方案、基础数据缺失、系统错误等,影响的商品数量超过2万多条。

控制影响规模:通过细粒度的灰度控制影响的产品数量,一旦发现问题,能够提供问题原因和影响规模,为改进方案提供依据。

及时发现问题:通过实时验证和线下验证能够及时校验新的搬迁逻辑。

控制影响时长:搬迁需要提供回滚功能,一旦发现严重问题,可以快速回滚。

逐步提高复杂度:商品间可能存在多重关联关系,比如A和B共享库存,B和C票种打包,相互关联的商品需要同时搬迁,如果有异常发生,需要全部回滚,逐步提升复杂度来验证可能带来的风险。

图:逐步灰度提高联量验证

在全量搬迁分析工具和实时验证都通过后,可以开始数据写入。数据写入后,还需要通过API进行实时验证,并进行抽样的线下验证。

图:搬迁的数据验证过程

3.1.2 效果

经过5个月的数据搬迁,结构整合上线,成功地实现了三套结构的合并。商户不再需要理解多个维护流程,也减少了产研投入成本。同时,我们下线了12个应用,从而降低了硬件成本。

国际化结构的升级使得国际站能够支持多种货架形式的售卖方式,并且降低了翻译的成本。

图:Trip.com门票货架

3.2 销售属性标准化

3.2.1 措施

信息结构化程度直接影响用户的预订体验。由于全球各地的景区和活动门票的售卖组合存在差异,改造前存在两类问题:

首先,门票的差异都体现在一个非结构化的文本字段中,例如:

图:非结构化的商品名称

这种文本字段带来的直接影响是用户难以理解各种门票的实际区别,同样的名称可能对应不同的价格,或者相同的价格可能对应不同的名称。

其次,不同景区的售卖方式多种多样,导致用户难以明确理解每张门票到底包括什么、不包括什么。由于大部分客户对景区了解有限,他们很难确定应该选择哪种门票。

图:商品重复,信息不清晰

尽管这些问题表面看起来简单,但实际上需要一个系统性的解决方案。这两类问题的关键在于SKU(库存单元)的结构化程度较低,导致影响用户决策的字段无法有效利用,从而无法实现“容易选、价格低”的目标。因此,我们采取以下措施:

销售属性标准化:为了提升SKU的可识别性,让系统能够区分不同商户提供的商品是相同还是存在差异。以门票为例,SKU的组成主要包括POI、票种、人群、销售属性和日期。

其中,影响价格和库存的主要是销售属性,例如演出门票中的“场次”和“座席”组合。类似于电商中的商品属性,如iPhone的销售属性是“颜色”和“版本”。

图:销售属性组合决定价格库存

商品名称由商户以文本形式录入,没有统一的标准,所以同样的“第一场”,不同的商户录入的可能是“20:10场”甚至“晚场”。

我们需要从文本字段中提取决定价格因素的属性,并将其转换为销售属性以实现统一标准。商户只需在景区提供的属性中进行组合选择,无需再进行文本录入。这不仅规范了数据,还降低了录入的工作量。

图:产品名称结构化为销售属性

3.2.2 效果

通过销售属性标准化,系统能够识别相同商品,并向用户推荐最优选项。这一举措显著提升了用户的预订体验,使用户更容易理解不同门票之间的区别,从而做出更明智的选择。

图:重复商品去除后效果

3.3 描述属性信息分层

3.3.1 措施

门票活动行业中存在多种复杂的品类,如门票、滑雪、温泉、演出等。每个品类都有独特的费用构成说明和使用方法,用户需要了解这些信息以便做出预订决策。

图:各品类的描述属性

改进之前,这些信息往往以不规范的文本形式存在,难以阅读,关键信息难以识别。这样的信息存在以下问题:

图:文本结构的费用说明

内容可读性差:文本格式没有标准,导致内容缺失和混乱。

信息准确性低:不同商户录入的信息可能不一致,信息的修改覆盖所有关联商品需要耗费时间,更新的时效性差。

录入工作量大:相同的内容,每条商品重复录入;

为了解决这些问题,我们采取以下两个关键措施:

POI信息集中管控:将景区的信息从产品层级提升到货架层级,以提高信息的一致性和复用性。

门票商品信息分为三类:

图:商品信息组成

描述属性可概括为:

费用包含:描述商品提供的实物或服务。

使用方法:商品实物或服务的使用方法,入园时间,取票地点等等。以分界洲岛为例,岛内售卖项目包括门票,船票,游览车,剧场,潜水等等内容。不同售卖项目组合出不同的售卖单元,每个售卖单元又需要把各类相关信息展示清楚。

预订和服务规则:商品的各类预定限制和服务规则,例如退换货限制,退款规则。

这三类信息在卖场和商品的不同层级中分布:

图:商品信息层级

信息层级决定了其复用性和灵活性。由于每一层和下一层的都是1:n关系,层级越低信息的灵活性就越强,商户可以在不同的SKU组合中灵活的设置预订和服务规则。

上层的信息可复用到下层,信息层级越高复用性越强。也更有助于信息的一致性。同一个景区或票种的提供的服务是景区提供,不会因为商户提供的商品不同而不同。所以将这类属性上移到POI中,通过建立POI元素信息库复用到商品来提升信息的准确性。

图:描述属性信息结构化管控

信息结构化,模版化:通过规范化信息格式,使其更丰富、格式更规范、内容更清晰。通过模板,规范化信息格式,可复用的模板包含多条语句,每条语句中包含多个类型的信息值。信息以Key/Value形式存储,便于系统处理和展示。

3.3.2 效果

通过描述属性的结构化提供给用户更清晰丰富的信息展示。

图:描述信息结构化前后对比

四、结语

本文详细阐述了门票商品结构的演进历程,以及在不同阶段所解决的核心问题。在整个演进过程中,我们针对业务和技术挑战采取了一系列的措施,以提升效率、用户体验以及信息的准确性和一致性。

首先,在商品结构升级合并方面,我们着重解决了产研的需求响应效率和翻译效率问题。通过明确的步骤和措施,我们成功地将多套商品结构合并为一个更具灵活性和可复用性的结构。这不仅提升了业务的效率,也降低了翻译成本,为国际市场的拓展奠定了基础。

销售属性标准化,让系统认识每条商品,提供为用户推荐更优商品的能力。

其次,通过销售属性标准化,我们使得系统能够识别每条商品,从而为用户推荐更优的选项。这一举措显著提升了用户在选购门票时的体验,使用户更加清晰地了解不同门票之间的差异,从而能够做出更明智的选择。

最后,描述属性信息分层的改进,让信息更为丰富和准确。通过将信息结构化、模板化,我们解决了信息可读性差、准确性低和录入工作量大等问题。这为用户提供了更清晰、更全面的商品信息,提升了用户对商品的了解和预订决策。

整个演进过程涉及到多个领域的合作,需要技术团队、业务团队和其他相关方的共同努力。在不断挑战中,我们充分发挥了团队的技术能力和执行力,成功地实现了目标。

希望本文所提及的解决方案能够为读者带来帮助和启发。在不断变化的业务环境下,合理的商品结构设计和优化是保持竞争力的关键之一,同时也是技术创新和协同合作的体现。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 电脑更新后出现错误,如何解决?(应对电脑更新错误的实用指南)

    电脑更新后出现错误,如何解决?(应对电脑更新错误的实用指南)

    2025-11-05 07:35

  • 打造自己的乐高电脑支架(发挥想象力,用乐高打造一个实用的电脑支架)

    打造自己的乐高电脑支架(发挥想象力,用乐高打造一个实用的电脑支架)

    2025-11-05 07:23

  • 为了方便开发人员在Visual Studio中使用GitHub,微软联合GitHub为Visual Studio 2015开发了GitHub插件,然而由于该插件中存在Bug,导致一位用户在短短几小时内就损失了6500美元。这一事件刚发生不久。今天小编给大家带来微软vs2015gitHub插件bug解决方法及微软vs2015gitHub插件更新下载,为了大家使用安全,用户们请及时更新! 事情的始末是这样的:从去年开始,黑客们就开始借助机器人程序24小时扫描GitHub,企图窃取用户不小心公开在GitHub中的亚马逊AWS API key,然后利用窃取到的AWS API key租赁服务器用于挖比特币。由于Visual Studio 2015的GitHub插件存在一处Bug,导致这位用户本想提交到私有仓库的代码被推送到了公有库,结果AWS key被暴露。不幸的是,在意识到问题之前,AWS key已被某比特币矿主爬到,结果导致该用户在几小时内损失了6500美元。事发后, 微软与GitHub积极联系了这位用户,目前已经提供了修复更新。假如你正在使用这款插件,请及时更新。Visual Studio 2015 GitHub插件更新:(点此下载)。

    为了方便开发人员在Visual Studio中使用GitHub,微软联合GitHub为Visual Studio 2015开发了GitHub插件,然而由于该插件中存在Bug,导致一位用户在短短几小时内就损失了6500美元。这一事件刚发生不久。今天小编给大家带来微软vs2015gitHub插件bug解决方法及微软vs2015gitHub插件更新下载,为了大家使用安全,用户们请及时更新! 事情的始末是这样的:从去年开始,黑客们就开始借助机器人程序24小时扫描GitHub,企图窃取用户不小心公开在GitHub中的亚马逊AWS API key,然后利用窃取到的AWS API key租赁服务器用于挖比特币。由于Visual Studio 2015的GitHub插件存在一处Bug,导致这位用户本想提交到私有仓库的代码被推送到了公有库,结果AWS key被暴露。不幸的是,在意识到问题之前,AWS key已被某比特币矿主爬到,结果导致该用户在几小时内损失了6500美元。事发后, 微软与GitHub积极联系了这位用户,目前已经提供了修复更新。假如你正在使用这款插件,请及时更新。Visual Studio 2015 GitHub插件更新:(点此下载)。

    2025-11-05 07:21

  • 当我们安装好Tomcat使用后发现,每次启动都需要在终端中手动键入sudo /var/tomcat/bin/startup.sh,那么我们怎么解决这个问题呢 以下是我的解决方案: 1.首先打开终端,输入su,接着输入ROOT的密码获得ROOT权限。进入/etc文件夹(使用cd /etc命令) 2.打开rc.local文件(在/etc目录下使用vi rc.local命令) 3.rc.local文件内容默认如下 #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will exit 0 on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /var/tomcat/bin/startup.sh exit 0 4.红色内容为我们手动添加的内容,这里指的是tomcat启动项,那么如何更改呢,首先键入A 进入INSERT模式,移动光标到红色位置输入准确路径,按ESC退出INSERT模式,光标移动到行尾,键入:wq保存文件 至此,我们已经解决这个问题,重启Ubuntu我们发现已经可以自动访问Tomcat下的内容了

    当我们安装好Tomcat使用后发现,每次启动都需要在终端中手动键入sudo /var/tomcat/bin/startup.sh,那么我们怎么解决这个问题呢 以下是我的解决方案: 1.首先打开终端,输入su,接着输入ROOT的密码获得ROOT权限。进入/etc文件夹(使用cd /etc命令) 2.打开rc.local文件(在/etc目录下使用vi rc.local命令) 3.rc.local文件内容默认如下 #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will exit 0 on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /var/tomcat/bin/startup.sh exit 0 4.红色内容为我们手动添加的内容,这里指的是tomcat启动项,那么如何更改呢,首先键入A 进入INSERT模式,移动光标到红色位置输入准确路径,按ESC退出INSERT模式,光标移动到行尾,键入:wq保存文件 至此,我们已经解决这个问题,重启Ubuntu我们发现已经可以自动访问Tomcat下的内容了

    2025-11-05 07:16

网友点评
精彩导读
inux/Ubuntu系统用的时间久了,经常会有一些系统更新,除了一些系统补丁、工具补丁、工具升级之外,内核也经常对一些问题进行修改升级,这样就会产生一些新的内核,我们更新了新的内核后,就会自动帮我们添加到开机启动菜单选项中,那些旧的内核启动项,对于我们来说已经没有用了,可以删除,删除后可以让我们在开机的时候能快速的选择要启动的菜单项,同时也能清理出一些磁盘空间出来,小编下面就来分享如何删除多余的内核启动菜单项注意:小编的这个建议只适合于10.10之前版本的ubuntu系统,后面的11.04,11.10。。。14.04系统因为采用的默认桌面不同,所以本经验不适用,若要使用,那么请安装GNOME桌面  1、打开“应用程序”,然后在弹出菜单中点击“附件”,选择并打开“终端”,打开终端命令窗口2、在终端命令窗口中输入并执行下面的命令:uname -a,查看我们当前使用的内核,不要删除错误了,或者当我们使用的是旧内核进入系统,想删除这个内核启动项,这样也是不能删除的。只能在开机时选择别的内核启动项进入系统才能删除3、输入下面的命令,查看当前我们系统中有哪些内核启动项,同时也可以方便我们复制的操作,具体命令是:dpkg --get-selections | grep linux4、下面就开始删除内核启动项,先选择内核启动项,然后复制,这样方便操作,然后输入下面的命令:sudo apt-get remove linux-image-2.6.32.21-generic5、执行过程中会警告我们确实要执行这个操作,输入字母y,然后回车,就开始卸载旧内核了6、之后就是一些具体的卸载过程的提示,已经更新系统启动项的信息7、我们再次使用命令:dpkg --get-selections | grep linux 来查看当前的内核情况:在 linux-image-2.6.32.21-generic 后面显示deinstall,表示已经卸载了linux-headers-2.6.32.21和 linux-headers-2.6.32.21-generic是之前我们卸载的内核相关联的头文件,现在对于我们也没有用,也可以卸载了,卸载了可以帮我们清理出不少磁盘空间,具体命令是:sudo apt-get remove linux-headers-2.6.32-21sudo apt-get remove linux-headers-2.6.32-21-generic8、删除完后,再用命令:dpkg --get-selections | grep linux 查看当前内核启动选项相关信息:linux-headers-2.6.32-21 已经没有了,被删除了linux-headers-2.6.32-21-generic已经没有了,被删除了linux-image-2.6.32-21-generic 显示为deinstall,表示被卸载删除了9、 虽然在卸载旧内核的时候提示信息说已经帮我们更新了系统启动项,但为了保险起见我们执行sudo update-grub更新开机启动控制文件。

inux/Ubuntu系统用的时间久了,经常会有一些系统更新,除了一些系统补丁、工具补丁、工具升级之外,内核也经常对一些问题进行修改升级,这样就会产生一些新的内核,我们更新了新的内核后,就会自动帮我们添加到开机启动菜单选项中,那些旧的内核启动项,对于我们来说已经没有用了,可以删除,删除后可以让我们在开机的时候能快速的选择要启动的菜单项,同时也能清理出一些磁盘空间出来,小编下面就来分享如何删除多余的内核启动菜单项注意:小编的这个建议只适合于10.10之前版本的ubuntu系统,后面的11.04,11.10。。。14.04系统因为采用的默认桌面不同,所以本经验不适用,若要使用,那么请安装GNOME桌面  1、打开“应用程序”,然后在弹出菜单中点击“附件”,选择并打开“终端”,打开终端命令窗口2、在终端命令窗口中输入并执行下面的命令:uname -a,查看我们当前使用的内核,不要删除错误了,或者当我们使用的是旧内核进入系统,想删除这个内核启动项,这样也是不能删除的。只能在开机时选择别的内核启动项进入系统才能删除3、输入下面的命令,查看当前我们系统中有哪些内核启动项,同时也可以方便我们复制的操作,具体命令是:dpkg --get-selections | grep linux4、下面就开始删除内核启动项,先选择内核启动项,然后复制,这样方便操作,然后输入下面的命令:sudo apt-get remove linux-image-2.6.32.21-generic5、执行过程中会警告我们确实要执行这个操作,输入字母y,然后回车,就开始卸载旧内核了6、之后就是一些具体的卸载过程的提示,已经更新系统启动项的信息7、我们再次使用命令:dpkg --get-selections | grep linux 来查看当前的内核情况:在 linux-image-2.6.32.21-generic 后面显示deinstall,表示已经卸载了linux-headers-2.6.32.21和 linux-headers-2.6.32.21-generic是之前我们卸载的内核相关联的头文件,现在对于我们也没有用,也可以卸载了,卸载了可以帮我们清理出不少磁盘空间,具体命令是:sudo apt-get remove linux-headers-2.6.32-21sudo apt-get remove linux-headers-2.6.32-21-generic8、删除完后,再用命令:dpkg --get-selections | grep linux 查看当前内核启动选项相关信息:linux-headers-2.6.32-21 已经没有了,被删除了linux-headers-2.6.32-21-generic已经没有了,被删除了linux-image-2.6.32-21-generic 显示为deinstall,表示被卸载删除了9、 虽然在卸载旧内核的时候提示信息说已经帮我们更新了系统启动项,但为了保险起见我们执行sudo update-grub更新开机启动控制文件。

Nginx (engine-x)是一个开源的高性能 HTTP 服务器、反向代理和 IMAP/POP3 代理服务器。nginx 杰出的功能有:稳定、丰富的功能集、简单的配置和低资源消耗。nginx 被用于一些高性能网站并在站长之间变得越来越流行。本教程会从源码构建一个带有 google paespeed 模块的用于 Ubuntu 15.04 的 nginx .deb 安装包。pagespeed 是一个由 google 开发的 web 服务器模块来加速网站响应时间、优化 html 和减少页面加载时间。ngx_pagespeed 的功能如下: 图像优化:去除元数据、动态缩放、重压缩。 CSS 与 JavaScript 压缩、串联、内联、外联。 小资源内联 图像与 JavaScript 延迟加载 HTML 重写 缓存生命期插件前置要求 Ubuntu Server 15.04 64位 root 权限该文我们将要: 安装必备软件包 安装带 ngx_pagespeed 的 nginx 测试安装必备包复制代码代码如下:sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev安装带 ngx_pagespeed 的 nginx第一步 - 添加nginx仓库复制代码代码如下: vim /etc/apt/sources.list.d/nginx.list加入下面的行:复制代码代码如下:deb http://nginx.org/packages/ubuntu/ trusty nginx    deb-src http://nginx.org/packages/ubuntu/ trusty nginx更新仓库:复制代码代码如下:sudo apt-get update注意:假如你看到信息:GPG error [...] NO_PUBKEY [...] 等等请添加key:复制代码代码如下:sudo sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYNUMBER    sudo apt-get update第二步 - 从仓库下载 nginx 1.8复制代码代码如下: sudo su    cd ~    mkdir -p ~/new/nginx_source/    cd ~/new/nginx_source/    apt-get source nginx    apt-get build-dep nginx第三步 - 下载 Pagespeed复制代码代码如下:cd ~    mkdir -p ~/new/ngx_pagespeed/    cd ~/new/ngx_pagespeed/    ngx_version=1.9.32.3    wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${ngx_version}-beta.zip    unzip release-${ngx_version}-beta.zip    cd ngx_pagespeed-release-1.9.32.3-beta/    wget https://dl.google.com/dl/page-speed/psol/${ngx_version}.tar.gz    tar -xzf 1.9.32.3.tar.gz第四步 - 配置 nginx 来编译 Pagespeed复制代码代码如下:cd ~/new/nginx_source/nginx-1.8.0/debin/    vim rules在两处 CFLAGS .configure 下添加模块: --add-module=../../ngx_pagespeed/ngx_pagespeed-release-1.9.32.3-beta  adding pagespeed to nginx adding pagespeed to nginx  第五步 - 打包 nginx 软件包并安装复制代码代码如下:cd ~/new/nginx_source/nginx-1.8.0/    dpkg-buildpackage -bdpkg-buildpackage 会编译 ~/new/ngix_source/ 为 nginx.deb。打包完成后,看一下目录:复制代码代码如下:cd ~/new/ngix_source/    ls nginx builded with pagespeed    接着安装 nginx。复制代码代码如下:dpkg -i nginx_1.8.0-1~trusty_amd64.deb    测试运行 nginx -V 测试 nginx 是否已经自带 ngx_pagespeed。复制代码代码如下:nginx -V   总结稳定、快速、开源的 nginx 支持许多不同的优化模块。这其中之一是 google 开发的‘pagespeed’。不像 apache,nginx 模块不是动态加载的,因此你必须在编译之前就选择好需要的模块。

Nginx (engine-x)是一个开源的高性能 HTTP 服务器、反向代理和 IMAP/POP3 代理服务器。nginx 杰出的功能有:稳定、丰富的功能集、简单的配置和低资源消耗。nginx 被用于一些高性能网站并在站长之间变得越来越流行。本教程会从源码构建一个带有 google paespeed 模块的用于 Ubuntu 15.04 的 nginx .deb 安装包。pagespeed 是一个由 google 开发的 web 服务器模块来加速网站响应时间、优化 html 和减少页面加载时间。ngx_pagespeed 的功能如下: 图像优化:去除元数据、动态缩放、重压缩。 CSS 与 JavaScript 压缩、串联、内联、外联。 小资源内联 图像与 JavaScript 延迟加载 HTML 重写 缓存生命期插件前置要求 Ubuntu Server 15.04 64位 root 权限该文我们将要: 安装必备软件包 安装带 ngx_pagespeed 的 nginx 测试安装必备包复制代码代码如下:sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev安装带 ngx_pagespeed 的 nginx第一步 - 添加nginx仓库复制代码代码如下: vim /etc/apt/sources.list.d/nginx.list加入下面的行:复制代码代码如下:deb http://nginx.org/packages/ubuntu/ trusty nginx deb-src http://nginx.org/packages/ubuntu/ trusty nginx更新仓库:复制代码代码如下:sudo apt-get update注意:假如你看到信息:GPG error [...] NO_PUBKEY [...] 等等请添加key:复制代码代码如下:sudo sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYNUMBER sudo apt-get update第二步 - 从仓库下载 nginx 1.8复制代码代码如下: sudo su cd ~ mkdir -p ~/new/nginx_source/ cd ~/new/nginx_source/ apt-get source nginx apt-get build-dep nginx第三步 - 下载 Pagespeed复制代码代码如下:cd ~ mkdir -p ~/new/ngx_pagespeed/ cd ~/new/ngx_pagespeed/ ngx_version=1.9.32.3 wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${ngx_version}-beta.zip unzip release-${ngx_version}-beta.zip cd ngx_pagespeed-release-1.9.32.3-beta/ wget https://dl.google.com/dl/page-speed/psol/${ngx_version}.tar.gz tar -xzf 1.9.32.3.tar.gz第四步 - 配置 nginx 来编译 Pagespeed复制代码代码如下:cd ~/new/nginx_source/nginx-1.8.0/debin/ vim rules在两处 CFLAGS .configure 下添加模块: --add-module=../../ngx_pagespeed/ngx_pagespeed-release-1.9.32.3-beta adding pagespeed to nginx adding pagespeed to nginx  第五步 - 打包 nginx 软件包并安装复制代码代码如下:cd ~/new/nginx_source/nginx-1.8.0/ dpkg-buildpackage -bdpkg-buildpackage 会编译 ~/new/ngix_source/ 为 nginx.deb。打包完成后,看一下目录:复制代码代码如下:cd ~/new/ngix_source/ ls nginx builded with pagespeed    接着安装 nginx。复制代码代码如下:dpkg -i nginx_1.8.0-1~trusty_amd64.deb    测试运行 nginx -V 测试 nginx 是否已经自带 ngx_pagespeed。复制代码代码如下:nginx -V   总结稳定、快速、开源的 nginx 支持许多不同的优化模块。这其中之一是 google 开发的‘pagespeed’。不像 apache,nginx 模块不是动态加载的,因此你必须在编译之前就选择好需要的模块。

热门资讯