<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>ningzhang422 (zhang)</title>
    <link>https://ruby-china.org/ningzhang422</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>关于提高 Rails 性能，你需要知道的三件事</title>
      <description>&lt;h3 id="1 scaling"&gt;1 scaling&lt;/h3&gt;&lt;h3 id="2 caching"&gt;2 caching&lt;/h3&gt;&lt;h3 id="3 code optimization"&gt;3 code optimization&lt;/h3&gt;
&lt;p&gt;请问 scaling 的准确中文翻译是什么 ? 架构 ? 部署方案？&lt;/p&gt;</description>
      <author>ningzhang422</author>
      <pubDate>Fri, 02 Sep 2016 21:02:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/30978</link>
      <guid>https://ruby-china.org/topics/30978</guid>
    </item>
    <item>
      <title>HTML5 Cache manifest 在 Rails 中的应用</title>
      <description>&lt;p&gt;大家肯定都听说过 html5 很多的新特性，html5 都出好多年了，说新不新了。今天我们来讨论一下 html5 cache manifest，应用程序缓存。
这个应用程序缓存的好处主要有三点，&lt;a href="http://www.w3school.com.cn/html5/html_5_app_cache.asp" rel="nofollow" target="_blank" title=""&gt;W3School 概括的挺好的 &lt;/a&gt;。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;em&gt;离线浏览 - 用户可在应用离线时使用它们&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt; &lt;em&gt;速度 - 已缓存资源加载得更快&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt; &lt;em&gt;减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;关于 manifest 文件的创建，基本格式可以在上面的链接里了解。我感兴趣的是如何在客户端处理静态资源缓存 (JS,CSS)，减少 HTTP 请求开销，给我的应用提速。&lt;/p&gt;
&lt;h3 id="如何在rails 使用它"&gt;如何在 rails 使用它&lt;/h3&gt;
&lt;p&gt;可以用这个 gem &lt;a href="https://github.com/wycats/rack-offline" rel="nofollow" target="_blank" title=""&gt;rack-offline&lt;/a&gt; 来实现。
这个 gem 帮我们来管理 Manifest 文件的版本，触发使浏览器重新缓存文件的办法。我们只需要去考虑把什么东西放到客户端的浏览器缓存里去。
我们只需要去 &lt;code&gt;config/routes.rb&lt;/code&gt; 里加入&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;offline&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Rack&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Offline&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="sb"&gt;``&lt;/span&gt;
      &lt;span class="n"&gt;cache&lt;/span&gt; &lt;span class="no"&gt;ActionController&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;helpers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;asset_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"application.css"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="n"&gt;cache&lt;/span&gt; &lt;span class="no"&gt;ActionController&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;helpers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;asset_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"application.js"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="n"&gt;network&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s2"&gt;"/app.manifest"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;offline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这段 routing 会帮你新建一个 Manifest 文件：url 地址 &lt;code&gt;http://”host”/app.manifest&lt;/code&gt;。
文件内容如下&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;CACHE&lt;/span&gt; &lt;span class="no"&gt;MANIFEST&lt;/span&gt;
&lt;span class="c1"&gt;# bfecba583c42df59c0573cfad91afe7f96c70ec8bef90c369af1d5f6581a47e8&lt;/span&gt;
&lt;span class="sr"&gt;/assets/&lt;/span&gt;&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;css&lt;/span&gt;
&lt;span class="sr"&gt;/assets/&lt;/span&gt;&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;js&lt;/span&gt;

&lt;span class="no"&gt;NETWORK&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="sr"&gt;/
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;application.js&lt;/code&gt; 和 &lt;code&gt;application.css&lt;/code&gt; 将被放置到浏览器缓存里，而所有其他在&lt;code&gt;/&lt;/code&gt;后的文件都要在每次的 http request 向服务器拽取。&lt;/p&gt;

&lt;p&gt;如果你确定你的应用的用户群所使用的浏览器支持 html5, HTML5 cache manifest 未尝不是一个解决静态资源缓存的好办法，你们说呢？&lt;/p&gt;</description>
      <author>ningzhang422</author>
      <pubDate>Fri, 02 Sep 2016 18:03:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/30975</link>
      <guid>https://ruby-china.org/topics/30975</guid>
    </item>
  </channel>
</rss>
