官术网_书友最值得收藏!

Caching

The serving of content in the first iteration of the web server was rather inefficient—I hope you noticed! On every GET request, the blog source file is read from the disk and is processed. To gain some efficiency, we can use a map added to the Blog class as a field. Let's take a look at the following code snippet for more information:

    BlogPost getBlogPost(int index) {
    if (!_cache.containsKey(index)) {
      _cache[index] = new BlogPost(postPaths[index], index);
    }
    return _cache[index];
  }

The map object uses the blog index as a key and the resultant blog post as the value. This cache is kept in the memory so that if the blog server application is stopped and restarted, new requests will not initially come from the cache.

Note

Caching of content in web applications is quite an art. For example, a cache could be put in place at the request level for both entire pages and images. The underlying operating system will also cache files in memory, making operations much faster on subsequent requests.

As ever, a memory cache is just one tool that may or may not improve a particular application. Benchmarking a performance and finding the bottleneck that needs caching is critical for a high-performance application.

The cache is something that must be remembered when the content is refreshed and when a new blog post is added. A simple strategy is to set the _cache object to {} (an empty map), relying on the first display of the post to fill the cache.

主站蜘蛛池模板: 苗栗县| 井冈山市| 林甸县| 平江县| 张家界市| 新津县| 福鼎市| 灵石县| 台南县| 澄江县| 枞阳县| 蒙自县| 云和县| 景泰县| 独山县| 甘孜县| 麻阳| 湟源县| 星座| 土默特右旗| 丰顺县| 临夏县| 得荣县| 来安县| 滨州市| 德化县| 金华市| 汾西县| 万源市| 安丘市| 阜新市| 柘城县| 塘沽区| 三穗县| 博野县| 遵义县| 乌审旗| 西平县| 黎平县| 克拉玛依市| 衢州市|