【问题标题】:is unescaping a javascript pre-escaped function a bad idea for performance?取消转义 javascript 预转义函数对性能来说是个坏主意吗?
【发布时间】:2010-09-30 00:49:51
【问题描述】:

我想预先转义部分 javascript 代码,然后以 eval(unescape([code])) 的形式将其包含在我的页面中。我会牺牲性能吗?

【问题讨论】:

    标签: javascript obfuscation javascript-framework


    【解决方案1】:

    不必担心对蜘蛛隐藏您的 JavaScript 代码。这应该是您最不关心的问题,尤其是因为他们懒得看它(除了寻找更多要抓取的链接)。

    http://googlewebmastercentral.blogspot.com/2007/11/spiders-view-of-web-20.html

    【讨论】:

    • 但我确信他们这样做是为了防止黑帽 SEO。
    • @Neo:也许你可以解释一下为什么你想对蜘蛛隐藏你的JS。
    • 我想了解eval(usescape([code]))的性能?
    • @Neo: eval 很慢,通常被认为是邪恶的(持保留态度)。 Don't eval what you don't need to.
    • 你错了,google每隔一段时间就会解析页面,注意javascript,我什至认为它可能是一个使用gui爬行的蜘蛛,就像操作浏览器一样,但我没有知道。
    【解决方案2】:

    如果您想对蜘蛛隐藏某些内容,请使用外部脚本并设置您的 robots.txt。

    “好”蜘蛛会接受这一点,“坏”蜘蛛无论如何都会看一看。

    【讨论】:

      【解决方案3】:

      Unicode 字符转义序列

      例子

      var \u0062\u0061\u006E\u0061\u006E\u0061 = "\u0062\u0061\u006E\u0061\u006E\u0061";
      

      被解析为

      var banana = "banana";
      

      Base-36 解码

      (仅适用于不区分大小写的字母数字数据)

      parseInt("banana", 36);
      > 683010982
      
      683010982 .toString(36);
      > "banana"
      

      如果您将数据拆分并分隔数字,这可能适用于某些类型的数据。


      Base-64 编码

      你可以找到一个实现here...

      base64_encode("banana banana banana!")
      > "YmFuYW5hIGJhbmFuYSBiYW5hbmEh"
      
      base64_decode("YmFuYW5hIGJhbmFuYSBiYW5hbmEh")
      > "banana banana banana!"
      

      Base-85 编码

      打包的东西比 base-64 小一点。不太流行的格式,可能需要挖掘实现或自己制作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 2011-08-14
        • 1970-01-01
        • 2015-05-16
        • 2017-05-20
        • 1970-01-01
        • 2010-10-27
        相关资源
        最近更新 更多