英读廊——为什么说密码中加入特殊字符会更安全?

英读廊——为什么说密码中加入特殊字符会更安全?,第1张

Why adding @, &, *, #,%,etc makes your password stronger?

【译】为什么添加@,&,*,%等特殊字符会使你的密码更安全?

单词】adding 原型:add 动词现在进行式或动名词 [ad][æd] v. 加;增加;补充

【单词】etc 外来词 ['etk] abbr. 及其他;等等(=Et cetera)

【单词】password 名词 ['pas-wurd, 'pahs-]['pɑːswɜːd] n. 口令;密码

【解析】stronger本身是“更强壮”的意思,指的是密码的(加密)强度更大,简单地说就是更安全

【编者按】我们通常所说的“密码”,其实意义并不准确,安全领域的密码(secure code)一般是指加密时所使用的密文,而“口令”(password)才是我们一般所说的“登录密码”、“取款密码”这一类通常由字母、数字组成的字符组合,偶尔还可能有少量特殊字符。但由于大家说的习惯了,因此称作“密码”也无伤大雅。一般来说,密码相对于口令更复杂、更长、加密强度更高。

It makes for more different possibilities of what each character could be, and it makes it so your password won't be found in a dictionary.

【译】它使得每一个字符都有更多不同的可能性,这样你的密码就不会在字典中找到了。

【单词】possibilities 原型:possibility  pos-uh-'bil-i-tee][ˌpɒsə'bɪləti] n. 可能;可能性;可能的事情;潜在的价值

【单词】character 名词 ['kar-ik-ter]['kærəktə] n. 字符

【单词】dictionary 名词 ['dik-shuh-ner-ee]['dɪkʃənri] n. 字典;辞典;词典

【解析】黑客们破解密码往往使用“字典破解”的方法,即准备一个常用单词的列表,从里面逐个挑选单词来对密码进行破解尝试。这是基于人们设置密码往往会选择有意义的单词这个前提来进行破解的方法,实际应用中也会将单词加以组合、大小写变化并加入数字和常见特殊字符等。

So eg: if your password was only numbers (0-9) and lowercase letters (a-z) then each character has 36 possibilities, right? so a 5 character password would have 36*36*36*36*36 possibilities.

【译】所以举例来说,如果你的密码只有数字(0-9)和小写字母(a-z),那么每个字符都有36种可能,对吧?所以5个字符的密码有36*36*36*36*36的可能性。

【单词】eg 名词 abbr. <拉>例如(=exempli gratia)

【单词】lowercase 名词 ['loh-er-'keys]['ləʊəˌkeɪs] adj. 小写体的 vt. 用小写字母书写;用小写字母打字 n. 小写体;小写字母 lower-

Now say you add uppercase letters and 15 different special characters.

【译】现在假设您添加大写字母和15个不同的特殊字符。

【单词】add 动词一般现在时(除第三人称单数) [ad][æd] v. 加;增加;补充

【单词】uppercase 名词 ['uhp-er-'keys]['ʌpəˌkeɪs] n. 大写字母 adj. 大写的 vt. 用大写字母排版或印刷

Now there are 77 possibilities per character, so 77*77*77*77*77 possibilities for what your password could be.

【译】现在每个字符有77种可能,所以您的密码可能是77*77*77*77*77。

This is exactly why length is more important than special characters though.

【译】这就是为什么长度比特殊字符更重要的原因。

【单词】exactly 副词 [ig-'zakt-lee][ɪɡ'zæktli] adv. 精确地;确切地;完全地;严密地;正是

【单词】length 名词 [lengkth, length, lenth][leŋθ] n. 长度;时间长短;距离;一段;距离的测量单位

In your example, 36* 36* 36* 36* 36 for a 5 character password = 60,466,176 possibilities.

【译】在你的示例中,对于5个字符的密码,36*36*36*36=60466176种可能性。

77* 77* 77* 77* 77= 2,706,784,157 possibilities.

【译】77*77*77*77*77=2706784157种可能性。

So adding the special characters gives you 44x as many possibilities for the same length password.

【译】因此,添加特殊字符可以为相同长度的密码提供44倍的可能性。

However, simply by making it a 6 digit password instead of 5, you end up with:

【译】但是,只需将其设置为6位密码而不是5位密码,您将得到:

【短语】instead of 代替(……的是);而不是…;例句:Instead of pressing forward, they drew back. 他们不仅没有前进,反而后退了。Oops! I put in sugar instead of salt. 啊!我错把糖当盐放了。

【单词】digit 名词 ['dij-it]['dɪdʒɪt] n. 数字;位数;手指;脚趾

36* 36* 36* 36* 36* 36=2,176,782,336 - nearly equivalent to the 5 digit password with 77 possible characters being used.

【译】36*36*36*36*36*36=2176782336——几乎相当于使用了77个可能字符的5位密码。

【单词】equivalent 形容词 [ih-'kwiv-uh-luh nt or for 5, ee-kwuh-'vey-luh nt][ɪ'kwɪvələnt] adj. 等价的 相等的 n. 相等物

At 7 digits long, you have now drastically exceeded the combinations possible with a 5 digit password using special characters, and that's without using any special characters in your 7 digit code (78,365,164,096 / 2,706,784,157 = 29x greater possibilities than just adding special characters, and a whopping 1,296x as many possibilities as the 5 digit - again, without special characters).

【译】在7位数的长度下,你已经大大超过了使用特殊字符的5位密码的可能组合,而且在你的7位密码中不使用任何特殊字符(78365164096/2706784157=29x比仅仅添加特殊字符的可能性大29倍,而且1,296倍于5位数的可能性-同样,没有特殊字符)。

【单词】digits 原型:digit 名词复数形式 ['dij-it]['dɪdʒɪt] n. 数字;位数;手指;脚趾

【单词】drastically 副词 ['dras-tik]['drɑːstɪkli] adv. 大幅度地;彻底地

【单词】exceeded 原型:exceed 动词过去分词 [ik-'seed][ɪk'siːd] vt. 超过;超出 vi. 领先

【单词】combinations 原型:combination 名词复数形式 [kom-buh-'ney-shuhn][ˌkɒmbɪ'neɪʃn] n. 结合;结合到一起的事物或人;密码

【单词】code 名词 [kohd][kəʊd] n. 密码;法规;准则 v. 制成法典;把 ... 编码

【单词】whopping 形容词 ['hwop-ing, 'wop-]['wɒpɪŋ] adj. 巨大的;非常大的;异常的 adv. 非常地 动词whop的现在分词.

Now, given the same length passwords, obviously having the option for special characters greatly increases your possibilities.

【译】现在,给定相同长度的密码,很明显,选择特殊字符会大大增加您的可能性。

【单词】obviously 副词 ['ɒbviəsli] adv. 显然地

【单词】option 名词 ['op-shuhn]['ɒpʃn] n. 选择权;可选物 v. 得到或获准进行选择

【单词】greatly 副词 ['greyt-lee]['ɡreɪtli] adv. 很;非常;大大地

But overall, length of password affects things far more.

【译】但总的来说,密码长度的影响要大得多。

【短语】far more 多得多的,更...的多的;例句:A bicycle's often far more convenient than a car in busy cities. 在热闹的都市里骑自行车往往比坐汽车方便得多。

【短语】take over 表示“接管;接收”。如:I intend you to take over. 我打算让你来接管。

【单词】overall 形容词 [adverb 'oh-ver-'awladjective, noun 'oh-ver-awl][ˌəʊvər'ɔːl] adj. 全部的;总体的;全面考虑的 adv. 总的来说;总共 n. 罩衫;工作服

【单词】affects 原型:affect 名词复数形式 [verb uh-'fektnoun 'af-ekt][ə'fekt] vt. 影响;感动;作用

Also, in a larger sense... having people generally remember their passwords is a vital part of security.

【译】而且,从更大的意义上说,让人们记住他们的密码是安全的一个重要部分。

【短语】part of ... (某事物的)一部分;例句:He received part of his education in England. 他有一部分教育是在英国接受的。

【单词】vital 形容词 ['vahyt-l]['vaɪtl] adj. 至关重要的;有活力的;生死攸关的

If people frequently forget their passwords and have to do unusual stuff to reset them to the point where unusual password resets become normalized, that becomes another potential security vulnerability (one that completely bypasses the password's strength.)

【译】如果人们经常忘记自己的密码,不得不做一些不寻常的事情来重置密码,直到异常密码重置变得正常化,这就成为另一个潜在的安全漏洞(完全绕过密码的强度)

【用法】have to do sth. 表示“必须”、“不得不”、“只好”、“(被迫)很勉强”去做某事,后面跟动词原形,与情态动词 must 近义但区别在于:have to 表示客观的需要,must 表示说话人主观上的看法,既主观上的必要。例句:My brother was very ill, so I had to call the doctor in the middle of the night. 我弟弟病得很厉害,我只得半夜里把医生请来。(客观上需要做这件事) He said that they must work hard. 他说他们必须努力工作。(主观上要做这件事)

【单词】frequently 副词 ['free-kwuhnt-lee]['friːkwəntli] adv. 频繁地;经常地

【单词】forget 动词一般现在时(除第三人称单数) [fer-'get][fə'ɡet] v. 忘记;忽略

【单词】unusual 形容词 [uhn-'yoo-zhoo-uhl, -'yoozh-wuhl][ʌn'juːʒuəl] adj. 异常的;独特的;与众不同的

【单词】stuff 名词 [stuhf][stʌf] n. 东西;原料;材料 n. 素质;本质;废物;无用的想法;废话,蠢话 vt. 塞满;填满

【单词】reset 名词 [verb ree-'setnoun 'ree-set][ˌriː'set] n. 重新设定;重新组合 v. 重新设定;重新放置;重新组合

【单词】resets 名词复数形式 [verb ree-'setnoun 'ree-set][ˌriː'set] n. 重新设定;重新组合 v. 重新设定;重新放置;重新组合

【单词】normalized 原型:normalize 动词过去分词 ['nawr-muh-lahyz]['nɔːməlaɪz] v. 使正常;使标准化;使合规格

【单词】vulnerability 名词 ['vuhl-ner-uh-buhl][ˌvʌlnərə'bɪləti] n. 易受攻击;弱点,脆弱;[计]漏洞

【单词】completely 副词 [kuhm-'pleet][kəm'pliːtli] adv. 完全地;十分地;全然

【单词】bypasses 名词复数形式 ['bahy-pas, -pahs]['baɪpɑːs] vt. 绕开;忽视 n. 支路;旁道

【单词】strength 名词 [strengkth, strength, strenth][streŋθ] n. 力气;强度;力量;长处

This is one of the reasons why the requirements for frequent password changes and unusual characters are misguided.

【译】这就是为什么频繁更改密码和不寻常字符的要求其实有时候是一种误导的原因之一。

【单词】requirements 原型:requirement 名词复数形式 [ri-kwahyuhr-muhnt][rɪ'kwaɪəmənt] n. 必要条件;要求

【单词】frequent 形容词 [adjective 'free-kwuhntverb fri-'kwent, 'free-kwuhnt]['friːkwənt] adj. 频繁的;经常的 vt. 常到;常去

【单词】misguided 动词过去分词 [mis-'gahy-did][ˌmɪs'ɡaɪdɪd] adj. 搞错的;被误导的;举措失当的 动词misguide的过去式和过去分词.

Requiring frequent password changes in particular adds almost no security and create considerable vulnerabilities because they encourage people to use simple, easily-remembered passwords.

【译】尤其是需要频繁更改密码几乎不会增加安全性,并且会造成相当大的漏洞,因为这会鼓励人们使用简单易记的密码。

【单词】create 动词原形 [kree-'eyt][kri'eɪt] v. 创造;造成 adj. <古>创造的

【单词】vulnerabilities 原型:vulnerability 名词复数形式 ['vuhl-ner-uh-buhl][ˌvʌlnərə'bɪləti] n. 易受攻击;弱点,脆弱;[计]漏洞

【单词】encourage 动词一般现在时(除第三人称单数) [en-'kur-ij, -'kuhr-][ɪn'kʌrɪdʒ] vt. 鼓励;促进;支持

Yes, it can help you if your password was compromised, but the goal of a password policy should be to prevent that in the first place.

【译】是的,如果您的密码被泄露,它可以帮助您,但是密码策略的目标应该是首先防止这种情况发生。

【单词】compromised 原型:compromise 动词过去分词 ['kom-pruh-mahyz]['kɒmprəmaɪz] n. 妥协;折衷;折衷案;和解 vt. 妥协处理;危害 vi. 妥协,和解;让步

【单词】goal 名词 [gohl][ɡəʊl] n. 球门;目标;得分

【单词】prevent 动词原形 [pri-'vent][prɪ'vent] v. 预防;防止,阻止;挡住

And more generally, any security / password scheme should be seen as a trade-off between convenience for users and security.

【译】更一般地说,任何安全/密码方案都应被视为在方便用户和安全性之间进行权衡。

【单词】trade-off 名词 n. (对不能同时兼顾的因素)权衡;物物交换,交易;取舍

【单词】convenience 名词 [kuhn-'veen-yuhns][kən'viːnjəns] n. 便利;舒适;适宜;便利设施;方便的时间

【单词】users 原型:user 名词复数形式 ['yoo-zer]['juːzə] n. 用户;使用者

Requiring constant password changes is a pain in the ass for users while providing only minimal security benefit, so it's a bad trade-off - you would be better off "spending" that annoyance elsewhere, like longer password requirements, encouraging / requiring a secure password manager, or using a 2FA app.

【译】对用户来说,要求不断地更改密码是一件很麻烦的事,同时只提供最小的安全好处,所以这是一个很糟糕的权衡-你最好还是“花”在其他地方,比如更长的密码要求,鼓励/要求一个安全的密码管理器,或者使用两步验证法。

【单词】constant 形容词 ['kon-stuhnt]['kɒnstənt] adj. 不变的;经常的 n. 常数;恒量

【单词】pain 名词 [peyn][peɪn] n. 痛苦;疼痛;辛苦;烦人之人或事 v.使... 痛苦;痛苦;疼

【单词】ass 名词复数形式 [as][æs] n. 驴;愚蠢的人;臀部,屁股 adv. (常用作后置)用于贬损或骂人

【单词】minimal 形容词 ['min-uh-muhl]['mɪnɪməl] adj. 最小的;最低限度的

【单词】spending 原型:spend 动词现在进行式或动名词 [spend][spend] n. 预算;花销 v. 花费;浪费;度过;用尽(气力等)

【单词】annoyance 名词 [uh-'noi-uhns][ə'nɔɪəns] n. 烦恼;生气;令人讨厌的人或事情

【单词】elsewhere 副词 ['els-hwair, -wair][ˌels'weə] adv. 别处

【单词】encouraging 原型:encourage 现在分词做形容词 [en-'kur-ij, -'kuhr-][ɪn'kʌrɪdʒ] vt. 鼓励;促进;支持

【单词】app 名词 [ap][æp] abbr. 应用程序(=application)

【专有名词】2FA 2 Fa ctor Authentication,双因子验证,是一种安全密码验证方式。通过增加一种不同的验证方法来提高安全性,例如:在输入密码登录的基础上,额外要求进行手机短信验证码验证。

【编者按】现在更清楚了吗?总的来说,我们最好适当增加密码的长度,可以混入少量特殊字符来提升安全性,这两者都可以加大密码的强度,但不要忘了,密码要能自己记住!

早期 Web 开发时有一种说法 请求太多会影响页面性能 如果您知道有什么技巧可以减少网页所触发的 HTTP 请求数 尽可能使用这些方法吧 随着网页中越来越多地填充了丰富的视觉内容 下载 CSS 脚本和图像等相关资源所需的成本显著攀升 毫无疑问 在大多数情况下 这些资源可由浏览器缓存到本地 但保持最初占用的空间会是非常困难的 此外 减少请求的数量和大小也有助于确保低带宽占用 降低延迟以及延长电池寿命 在移动浏览中 这些都是关键因素 解决这些问题最普遍接受的方法包含了两个 *** 作的结合 捆绑和缩小

在本文中 我将从 ASP NET MVC 提供的软件工具的独有角度出发 介绍 CSS 文件的捆绑和缩小 这一话题延续了我之前的专栏 在 ASP NET MVC 中创建为移动设备优化的视图 第 部分 使用 WURFL (msd/magazine/dn )

捆绑和缩小的基础知识

捆绑是将多个不同资源汇总成为单个可下载资源的过程 例如 一个捆绑中可能包括多个 JavaScript 或 CSS 文件 您可以通过向某个特定端点发送单个 HTTP 请求 将这些内容下载到本地计算机 另一方面 缩小是对资源应用的转换 具体而言 缩小是从基于文本的资源中删除所有不必要字符的过程 这一过程不会改变预期功能 这意味着缩短标识符 对函数使用别名以及删除注释 空格字符和新行 一般来说 添加这些所删除字符通常是为了提升可读性 但是会占用空间并且实际不起到任何功能用途

捆绑和缩小可同时应用 但过程彼此独立 根据需要 您可以决定只创建捆绑或者只缩小单独文件 不过 通常在生产站点上 没有理由不捆绑和缩小所有 CSS 及 JavaScript 文件 当然也有一些例外 诸如 jQuery 等公共资源可能会位于众所周知的内容交付网络 (CDN) 上 但是 在调试时这就是完全不同的情况 经过缩小或者捆绑的资源非常难于阅读和单步执行 因此您可能不希望启用捆绑和调试

许多框架提供了捆绑和缩小服务 其可扩展性水平略有差别 并且采用了不同的功能集 大多数情况下 它们提供了相同的功能 因此选择哪一种纯属个人偏好 如果您正在编写 ASP NET MVC 应用程序 则捆绑和缩小的选择自然就是 Microsoft ASP NET Web Optimization Framework 该框架在 NuGet 程序包 (bit ly/ bS u B) 中提供 如 中所示

图 安装 Microsoft ASP NET Web Optimization Framework

使用 CSS 捆绑

就我认为 了解 CSS 捆绑机制的最佳方法是从一个真正的空 ASP NET MVC 项目开始着手 这意味着使用空项目模板来创建新项目并删除未使用的引用和文件 接下来 假定您添加链接多个 CSS 文件的布局文件

<link rel="stylesheet"      href="@Url Content("~/content/styles/site css")"/>         

如果使用 Fiddler 或 Internet Explorer 开发者工具显示页面并监视其网络活动 您会发现有两个并行下载 这是默认行为

请注意 在 ASP NET MVC 中 您可以使用新的 Styles Render 工具 以紧凑得多的方式重写以前的标记

@Styles Render(      "~/content/styles/site css"      "~/content/styles/site more css")          

位于 System Web Optimization 下的 Styles 类的功能远比第一眼看到的要强大 Styles Render 方法也支持捆绑 这意味着该方法有多个重载 其中一个接受 CSS URL 数组 不过 另一个重载接受以前创建的捆绑的名称(稍后将进一步介绍) 在本例中 它发出单个 <link>元素并使其指向自动生成的 URL 该 URL 返回经过捆绑或缩小的所有样式表 创建 CSS 捆绑

通常在 global asax 中以编程方式创建捆绑 按照配置代码的 ASP NET MVC 模式 您可能需要在 App_Start 文件夹下创建 BundleConfig 类 并在其外部公开静态初始化方法

BundleConfig RegisterBundles(BundleTable Bundles)         

一个 CSS 捆绑只是一个样式表集合 此处是将上述两个 CSS 文件分组到单个下载中的代码

public class BundleConfig    {      public static void RegisterBundles(BundleCollection bundles)      {        // Register bundles first        bundles Add(new Bundle("~/mycss") Include(          "~/content/styles/site css"          "~/content/styles/site more css"))       BundleTable EnableOptimizations = true     }    }          

创建新 Bundle 类 将用于从视图或网页中引用捆绑的虚拟路径传递到构造函数中 也可以在以后通过 Path 属性来设置虚拟路径 要将 CSS 文件与捆绑关联 需要使用 Include 方法 此方法接受表示虚拟路径的字符串数组 您可以按上例中所示明确指示 CSS 文件 也可以按此处所示指示模式字符串

bundles Add(new Bundle("~/mycss")       Include("~/content/styles/* css")         

Bundle 类还有 IncludeDirectory 方法 该方法可用于指示给定虚拟目录的路径 还可使用模式匹配字符串和布尔标志来启用对子目录的搜索

在之前代码片段中看到的在 Bundle­Table 类上设置的 EnableOptimization 布尔属性 表示需要显式启用捆绑 如果未以编程方式启用 则捆绑无法正常工作 如前所述 捆绑是一种优化方式 因此当站点是生产站点时通常很有意义 EnableOptimization 属性是一种设置捆绑的简便方法 应在生产中使用 不过以调试模式编译站点时应该禁用它 您甚至可以使用以下代码

if (!DEBUG)    {      BundleTable EnableOptimizations = true   }          

更多高级捆绑功能

就 CSS 捆绑而言 除了缩小之外 没有多少其他相关内容 不过 BundleCollection 类是一个通用类 也可用于捆绑脚本文件 特别是 BundleCollection 类有几个功能值得注意 虽然它们在捆绑脚本文件而非 CSS 文件时最有用

第一个功能是排序 BundleCollection 类有一个名为 Orderer 的属性 其类型为 IBundleOrderer 正如您所见 orderer 是一个负责确定您希望在捆绑文件以供下载时使用的实际顺序的组件 默认 orderer 是 DefaultBundleOrderer 类 此类按照 BundleCollection 属性 FileSetOrderLis 的设置所得到的顺序来捆绑文件 FileSetOrderList 设计作为 BundleFileSetOrdering 类的集合 这些类中的每一个都定义文件的模式(例如 jquery *) BundleFileSetOrdering 类添加到 FileSetOrderList 的顺序确定了文件的实际顺序 例如 在使用默认配置时 所有 jQuery 文件始终捆绑在 Modernizr 文件之前

DefaultBundleOrderer 类对 CSS 文件的影响则有限得多 如果您的网站中有名为 reset css 或 normalize css 的文件 则这些文件将自动捆绑在您的任意 CSS 文件之前 并且 reset css 始终要优先于 normalize css 如果您不熟悉重置/规范化样式表 那么这些样式表可以为所有 HTML 元素提供标准样式属性集 这样您的页面不会继承特定于浏览器的设置 例如字体 字号和边距 虽然这两种类型的 CSS 文件都有一些推荐的内容 但实际内容取决于您 如果您的项目中有这些名称的文件 则 ASP NET MVC 会通过额外方式确保这些文件捆绑在所有其他内容之前 如果您希望覆盖默认 orderer 并忽略预定义的捆绑文件集排序 可以使用两个选项 首先 可以针对每次捆绑创建自定义 orderer 下面是一个简单地忽略预定义排序的示例

public class PoorManOrderer : IBundleOrderer    {      public IEnumerable<FileInfo>OrderFiles(        BundleContext context IEnumerable<FileInfo>files)      {         return files     }    }          

您可以按下面所示的方式使用

var bundle = new Bundle("~/mycss")   bundle Orderer = new PoorManOrderer()         

此外 可以使用下列代码重置所有排序

bundles ResetAll()         

在本例中 使用默认 orderer 的效果与之前穷人 orderer 的效果相同 不过请注意 ResetAll 还将重置脚本排序

另一个更高级的功能是忽略列表 它通过 BundleCollection 类的 IgnoreList 属性 针对已选中包含的文件(但实际上应该忽略)定义模式匹配字符串 在 ASP NET MVC 中实现捆绑的主要优势是可以在单次调用中获取文件夹中的所有 JavaScript 文件 (* js) 但是 有可能 * js 还会匹配您不希望下载的文件 例如 vsdoc js 文件 IgnoreList 的默认配置考虑到了大多数常见情况 同时也允许自定义 运行中的 CSS 捆绑

CSS 捆绑是一种强大的优化功能 但是 在实际过程中是如何工作的? 请考虑使用以下代码

var bundle = new Bundle("~/mycss")   bundle Include("~/content/styles/* css")             bundles Add(bundle)         

中显示了对应的 HTTP 通信

图 第二个请求是有多个 CSS 文件的捆绑

第一个请求针对是主页 第二个请求不指向特定 CSS 文件 而是引用了包含 content/styles 文件夹中所有 CSS 文件的捆绑(请参阅

图 捆绑 CSS 示例

添加缩小功能

只有在将多个资源打包到一起以便通过单个下载捕获并进行缓存时 才需要使用 Bundle 类

正如 中的代码所示 下载的内容中添加了空白和新行字符以便于阅读 不过 浏览器并不关心可读性 对于浏览器来说 中的 CSS 代码完全等同于以下缩小代码中的字符串

body{font family:&# segoe ui&# font size: emmargin: px}       body{background color:# color:# d cc}          

对于我在此例中使用的简单 CSS 缩小功能可能并没有起到多大作用 但是 对于具有大量样式表的商务站点 缩小 CSS 就非常有意义

如何添加缩小功能? 非常简单 就像使用 StyleBundle 替换 Bundle 类一样 StyleBundle 出奇的简单 它继承自 Bundle 仅由不同的构造函数组成

public StyleBundle(string virtualPath)      : base(virtualPath new IBundleTransform[] { new CssMinify() })    {    }          

Bundle 类具有可接受 IBundleTransform 对象列表的构造函数 这些转换将逐个应用于内容 StyleBundle 类仅添加 CssMinify 转换器 CssMinify 是 ASP NET MVC (和更高版本)的默认缩小器 基于 WebGrease 优化工具 (webgreas) 无需赘言 如果您希望切换到不同缩小器 则需要做的就是获取类(IBundleTransform 的实现)并通过类 Bundle 的构造函数进行传递 再也不用找托辞

随 ASP NET MVC 捆绑的 Web Optimization Framework 添加了少量功能 不过 这些都是非常有用的功能 这就没有任何理由不去缩小和捆绑资源 到目前为止 可能的托辞都是 ASP NET 平台中缺少原生支持 ASP NET MVC 和更高的版本中不再是这种情况

lishixinzhi/Article/program/Web/201405/30992


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12010662.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存