[{"data":1,"prerenderedAt":1073},["ShallowReactive",2],{"blog:2019:wordpress-to-jekyll-faster":3,"blogMore-Development":1059,"comments-wordpress-to-jekyll-faster":1072},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"category":11,"tags":12,"excerpt":15,"body":30,"_type":1050,"_id":1051,"_source":1052,"_file":1053,"_stem":1054,"_extension":1055,"url":1056,"wordCount":1057,"minutes":275,"commentCount":1058},"/blog/2019/wordpress-to-jekyll-faster","2019",false,"en","WordPress to Jekyll part 6 - A faster build","My site goes back to 2004 and is reasonably sized but not massive even with the comments, so waiting 30 seconds for a change to reflect is disappointing.","2019-05-22T08:00:00-08:00","Development",[13,14],"WordPress","Jekyll",{"type":16,"children":17},"root",[18,25],{"type":19,"tag":20,"props":21,"children":22},"element","p",{},[23],{"type":24,"value":9},"text",{"type":19,"tag":20,"props":26,"children":27},{},[28],{"type":24,"value":29},"I investigated several options and ended up using a few in combination, skipping others and holding out for one.",{"type":16,"children":31,"toc":1042},[32,36,40,47,69,78,84,100,108,114,137,172,185,393,406,414,419,578,583,591,597,602,623,759,764,777,836,841,895,903,909,914,936,959,970,1004,1012,1018,1023,1028,1036],{"type":19,"tag":20,"props":33,"children":34},{},[35],{"type":24,"value":9},{"type":19,"tag":20,"props":37,"children":38},{},[39],{"type":24,"value":29},{"type":19,"tag":41,"props":42,"children":44},"h2",{"id":43},"incremental-build",[45],{"type":24,"value":46},"Incremental build",{"type":19,"tag":20,"props":48,"children":49},{},[50,52,59,61,67],{"type":24,"value":51},"Launching with the ",{"type":19,"tag":53,"props":54,"children":56},"code",{"className":55},[],[57],{"type":24,"value":58},"--incremental",{"type":24,"value":60}," switch, for example, ",{"type":19,"tag":53,"props":62,"children":64},{"className":63},[],[65],{"type":24,"value":66},"bundle exec jekyll serve --incremental",{"type":24,"value":68},", can speed things up a bit, but there are issues here. One is that it still builds many pages, tags, and categories as it updates, and the second is that if you're using collections, it misses rebuilding pages that reference that collection.",{"type":19,"tag":20,"props":70,"children":71},{},[72],{"type":19,"tag":73,"props":74,"children":75},"em",{},[76],{"type":24,"value":77},"Verdict: Not great.",{"type":19,"tag":41,"props":79,"children":81},{"id":80},"wsl2-or-a-mac",[82],{"type":24,"value":83},"WSL2 or a Mac?",{"type":19,"tag":20,"props":85,"children":86},{},[87,89,98],{"type":24,"value":88},"My primary dev box these days is a beefy Windows box. Jekyll doesn't seem to want to run under native Windows, and Windows Subsystem for Linux (WSL) can be slow compared to a Mac. Microsoft announced ",{"type":19,"tag":90,"props":91,"children":95},"a",{"href":92,"rel":93},"https://devblogs.microsoft.com/commandline/announcing-wsl-2/",[94],"nofollow",[96],{"type":24,"value":97},"Windows Subsystem for Linux 2 (WSL2)",{"type":24,"value":99}," which will be much faster but, it isn't available until June 2019 to insiders.",{"type":19,"tag":20,"props":101,"children":102},{},[103],{"type":19,"tag":73,"props":104,"children":105},{},[106],{"type":24,"value":107},"Verdict: Hold tight.",{"type":19,"tag":41,"props":109,"children":111},{"id":110},"caching",[112],{"type":24,"value":113},"Caching",{"type":19,"tag":20,"props":115,"children":116},{},[117,119,126,128,135],{"type":24,"value":118},"Hubber extraordinaire ",{"type":19,"tag":90,"props":120,"children":123},{"href":121,"rel":122},"https://ben.balter.com",[94],[124],{"type":24,"value":125},"Ben Balter",{"type":24,"value":127}," developed the ",{"type":19,"tag":90,"props":129,"children":132},{"href":130,"rel":131},"https://github.com/benbalter/jekyll-include-cache",[94],[133],{"type":24,"value":134},"Jekyll Include Cache",{"type":24,"value":136}," which can help speed up building.",{"type":19,"tag":20,"props":138,"children":139},{},[140,142,148,150,156,158,164,166],{"type":24,"value":141},"The approach it uses is that you can switch out a regular ",{"type":19,"tag":53,"props":143,"children":145},{"className":144},[],[146],{"type":24,"value":147},"include x",{"type":24,"value":149}," for ",{"type":19,"tag":53,"props":151,"children":153},{"className":152},[],[154],{"type":24,"value":155},"include_cached x",{"type":24,"value":157},", providing that x doesn't depend on any state/variables. That meant my footer, sidebar, and navbar could all easily be parsed and stored just once by changing things like: ",{"type":19,"tag":53,"props":159,"children":161},{"className":160},[],[162],{"type":24,"value":163},"{% include footer.html %}",{"type":24,"value":165}," to ",{"type":19,"tag":53,"props":167,"children":169},{"className":168},[],[170],{"type":24,"value":171},"{% include_cached footer.html %}",{"type":19,"tag":20,"props":173,"children":174},{},[175,177,183],{"type":24,"value":176},"There are, however, places where state is required, and this plugin can still help there. For example, my header is called using ",{"type":19,"tag":53,"props":178,"children":180},{"className":179},[],[181],{"type":24,"value":182},"{% include head.html %}",{"type":24,"value":184}," and contained code like this:",{"type":19,"tag":186,"props":187,"children":192},"pre",{"code":188,"language":189,"meta":190,"className":191,"style":190},"\u003Cmeta\n  name=\"description\"\n  content=\"{{ page.excerpt | markdownify | strip_html | truncatewords:40 }}\"\n/>\n\u003Ctitle>{{ page.title }} &raquo; DamienG\u003C/title>\n\u003Cmeta name=\"twitter:url\" content=\"{{ page.url | absolute_url }}\" />\n","html","","language-html shiki shiki-themes everforest-light dracula",[193],{"type":19,"tag":53,"props":194,"children":195},{"__ignoreMap":190},[196,214,247,273,282,331],{"type":19,"tag":197,"props":198,"children":201},"span",{"class":199,"line":200},"line",1,[202,208],{"type":19,"tag":197,"props":203,"children":205},{"style":204},"--shiki-default:#8DA101;--shiki-dark:#F8F8F2",[206],{"type":24,"value":207},"\u003C",{"type":19,"tag":197,"props":209,"children":211},{"style":210},"--shiki-default:#F57D26;--shiki-dark:#FF79C6",[212],{"type":24,"value":213},"meta\n",{"type":19,"tag":197,"props":215,"children":217},{"class":199,"line":216},2,[218,224,230,236,242],{"type":19,"tag":197,"props":219,"children":221},{"style":220},"--shiki-default:#DFA000;--shiki-default-font-style:inherit;--shiki-dark:#50FA7B;--shiki-dark-font-style:italic",[222],{"type":24,"value":223},"  name",{"type":19,"tag":197,"props":225,"children":227},{"style":226},"--shiki-default:#8DA101;--shiki-dark:#FF79C6",[228],{"type":24,"value":229},"=",{"type":19,"tag":197,"props":231,"children":233},{"style":232},"--shiki-default:#8DA101;--shiki-dark:#E9F284",[234],{"type":24,"value":235},"\"",{"type":19,"tag":197,"props":237,"children":239},{"style":238},"--shiki-default:#8DA101;--shiki-dark:#F1FA8C",[240],{"type":24,"value":241},"description",{"type":19,"tag":197,"props":243,"children":244},{"style":232},[245],{"type":24,"value":246},"\"\n",{"type":19,"tag":197,"props":248,"children":250},{"class":199,"line":249},3,[251,256,260,264,269],{"type":19,"tag":197,"props":252,"children":253},{"style":220},[254],{"type":24,"value":255},"  content",{"type":19,"tag":197,"props":257,"children":258},{"style":226},[259],{"type":24,"value":229},{"type":19,"tag":197,"props":261,"children":262},{"style":232},[263],{"type":24,"value":235},{"type":19,"tag":197,"props":265,"children":266},{"style":238},[267],{"type":24,"value":268},"{{ page.excerpt | markdownify | strip_html | truncatewords:40 }}",{"type":19,"tag":197,"props":270,"children":271},{"style":232},[272],{"type":24,"value":246},{"type":19,"tag":197,"props":274,"children":276},{"class":199,"line":275},4,[277],{"type":19,"tag":197,"props":278,"children":279},{"style":204},[280],{"type":24,"value":281},"/>\n",{"type":19,"tag":197,"props":283,"children":285},{"class":199,"line":284},5,[286,290,295,300,306,312,317,322,326],{"type":19,"tag":197,"props":287,"children":288},{"style":204},[289],{"type":24,"value":207},{"type":19,"tag":197,"props":291,"children":292},{"style":210},[293],{"type":24,"value":294},"title",{"type":19,"tag":197,"props":296,"children":297},{"style":204},[298],{"type":24,"value":299},">",{"type":19,"tag":197,"props":301,"children":303},{"style":302},"--shiki-default:#5C6A72;--shiki-dark:#F8F8F2",[304],{"type":24,"value":305},"{{ page.title }} ",{"type":19,"tag":197,"props":307,"children":309},{"style":308},"--shiki-default:#5C6A72;--shiki-dark:#BD93F9",[310],{"type":24,"value":311},"&raquo;",{"type":19,"tag":197,"props":313,"children":314},{"style":302},[315],{"type":24,"value":316}," DamienG",{"type":19,"tag":197,"props":318,"children":319},{"style":204},[320],{"type":24,"value":321},"\u003C/",{"type":19,"tag":197,"props":323,"children":324},{"style":210},[325],{"type":24,"value":294},{"type":19,"tag":197,"props":327,"children":328},{"style":204},[329],{"type":24,"value":330},">\n",{"type":19,"tag":197,"props":332,"children":334},{"class":199,"line":333},6,[335,339,344,349,353,357,362,366,371,375,379,384,388],{"type":19,"tag":197,"props":336,"children":337},{"style":204},[338],{"type":24,"value":207},{"type":19,"tag":197,"props":340,"children":341},{"style":210},[342],{"type":24,"value":343},"meta",{"type":19,"tag":197,"props":345,"children":346},{"style":220},[347],{"type":24,"value":348}," name",{"type":19,"tag":197,"props":350,"children":351},{"style":226},[352],{"type":24,"value":229},{"type":19,"tag":197,"props":354,"children":355},{"style":232},[356],{"type":24,"value":235},{"type":19,"tag":197,"props":358,"children":359},{"style":238},[360],{"type":24,"value":361},"twitter:url",{"type":19,"tag":197,"props":363,"children":364},{"style":232},[365],{"type":24,"value":235},{"type":19,"tag":197,"props":367,"children":368},{"style":220},[369],{"type":24,"value":370}," content",{"type":19,"tag":197,"props":372,"children":373},{"style":226},[374],{"type":24,"value":229},{"type":19,"tag":197,"props":376,"children":377},{"style":232},[378],{"type":24,"value":235},{"type":19,"tag":197,"props":380,"children":381},{"style":238},[382],{"type":24,"value":383},"{{ page.url | absolute_url }}",{"type":19,"tag":197,"props":385,"children":386},{"style":232},[387],{"type":24,"value":235},{"type":19,"tag":197,"props":389,"children":390},{"style":204},[391],{"type":24,"value":392}," />\n",{"type":19,"tag":20,"props":394,"children":395},{},[396,398,404],{"type":24,"value":397},"What you can do here is pass parameters to ",{"type":19,"tag":53,"props":399,"children":401},{"className":400},[],[402],{"type":24,"value":403},"include_cached",{"type":24,"value":405}," and read them the other side. Replacing the include with:",{"type":19,"tag":186,"props":407,"children":409},{"code":408},"{% include_cached head.html title=page.title url='page.url | absolute_url' excerpt='page.excerpt | markdownify | strip_html | truncatewords:40' %}\n",[410],{"type":19,"tag":53,"props":411,"children":412},{"__ignoreMap":190},[413],{"type":24,"value":408},{"type":19,"tag":20,"props":415,"children":416},{},[417],{"type":24,"value":418},"And changing the include itself to:",{"type":19,"tag":186,"props":420,"children":422},{"code":421,"language":189,"meta":190,"className":191,"style":190},"\u003Cmeta name=\"description\" content=\"{{ include.excerpt }}\" />\n\u003Ctitle>{{ include.title }} &raquo; DamienG\u003C/title>\n\u003Cmeta name=\"twitter:url\" content=\"{{ include.url }}\" />\n",[423],{"type":19,"tag":53,"props":424,"children":425},{"__ignoreMap":190},[426,482,522],{"type":19,"tag":197,"props":427,"children":428},{"class":199,"line":200},[429,433,437,441,445,449,453,457,461,465,469,474,478],{"type":19,"tag":197,"props":430,"children":431},{"style":204},[432],{"type":24,"value":207},{"type":19,"tag":197,"props":434,"children":435},{"style":210},[436],{"type":24,"value":343},{"type":19,"tag":197,"props":438,"children":439},{"style":220},[440],{"type":24,"value":348},{"type":19,"tag":197,"props":442,"children":443},{"style":226},[444],{"type":24,"value":229},{"type":19,"tag":197,"props":446,"children":447},{"style":232},[448],{"type":24,"value":235},{"type":19,"tag":197,"props":450,"children":451},{"style":238},[452],{"type":24,"value":241},{"type":19,"tag":197,"props":454,"children":455},{"style":232},[456],{"type":24,"value":235},{"type":19,"tag":197,"props":458,"children":459},{"style":220},[460],{"type":24,"value":370},{"type":19,"tag":197,"props":462,"children":463},{"style":226},[464],{"type":24,"value":229},{"type":19,"tag":197,"props":466,"children":467},{"style":232},[468],{"type":24,"value":235},{"type":19,"tag":197,"props":470,"children":471},{"style":238},[472],{"type":24,"value":473},"{{ include.excerpt }}",{"type":19,"tag":197,"props":475,"children":476},{"style":232},[477],{"type":24,"value":235},{"type":19,"tag":197,"props":479,"children":480},{"style":204},[481],{"type":24,"value":392},{"type":19,"tag":197,"props":483,"children":484},{"class":199,"line":216},[485,489,493,497,502,506,510,514,518],{"type":19,"tag":197,"props":486,"children":487},{"style":204},[488],{"type":24,"value":207},{"type":19,"tag":197,"props":490,"children":491},{"style":210},[492],{"type":24,"value":294},{"type":19,"tag":197,"props":494,"children":495},{"style":204},[496],{"type":24,"value":299},{"type":19,"tag":197,"props":498,"children":499},{"style":302},[500],{"type":24,"value":501},"{{ include.title }} ",{"type":19,"tag":197,"props":503,"children":504},{"style":308},[505],{"type":24,"value":311},{"type":19,"tag":197,"props":507,"children":508},{"style":302},[509],{"type":24,"value":316},{"type":19,"tag":197,"props":511,"children":512},{"style":204},[513],{"type":24,"value":321},{"type":19,"tag":197,"props":515,"children":516},{"style":210},[517],{"type":24,"value":294},{"type":19,"tag":197,"props":519,"children":520},{"style":204},[521],{"type":24,"value":330},{"type":19,"tag":197,"props":523,"children":524},{"class":199,"line":249},[525,529,533,537,541,545,549,553,557,561,565,570,574],{"type":19,"tag":197,"props":526,"children":527},{"style":204},[528],{"type":24,"value":207},{"type":19,"tag":197,"props":530,"children":531},{"style":210},[532],{"type":24,"value":343},{"type":19,"tag":197,"props":534,"children":535},{"style":220},[536],{"type":24,"value":348},{"type":19,"tag":197,"props":538,"children":539},{"style":226},[540],{"type":24,"value":229},{"type":19,"tag":197,"props":542,"children":543},{"style":232},[544],{"type":24,"value":235},{"type":19,"tag":197,"props":546,"children":547},{"style":238},[548],{"type":24,"value":361},{"type":19,"tag":197,"props":550,"children":551},{"style":232},[552],{"type":24,"value":235},{"type":19,"tag":197,"props":554,"children":555},{"style":220},[556],{"type":24,"value":370},{"type":19,"tag":197,"props":558,"children":559},{"style":226},[560],{"type":24,"value":229},{"type":19,"tag":197,"props":562,"children":563},{"style":232},[564],{"type":24,"value":235},{"type":19,"tag":197,"props":566,"children":567},{"style":238},[568],{"type":24,"value":569},"{{ include.url }}",{"type":19,"tag":197,"props":571,"children":572},{"style":232},[573],{"type":24,"value":235},{"type":19,"tag":197,"props":575,"children":576},{"style":204},[577],{"type":24,"value":392},{"type":19,"tag":20,"props":579,"children":580},{},[581],{"type":24,"value":582},"Which made the header easy to read as the title, description, and URL are used multiple times for the various types of metadata (Twitter, OpenGraph, etc.)",{"type":19,"tag":20,"props":584,"children":585},{},[586],{"type":19,"tag":73,"props":587,"children":588},{},[589],{"type":24,"value":590},"Verdict: Some good improvement.",{"type":19,"tag":41,"props":592,"children":594},{"id":593},"no-paging-tags-and-collections-for-local-dev",[595],{"type":24,"value":596},"No paging, tags, and collections for local dev",{"type":19,"tag":20,"props":598,"children":599},{},[600],{"type":24,"value":601},"I never actually browse the pages, tags, or collections locally but, they're essential for the CI and publishing. I've manually turned them off in the past but, it's error-prone and a pain. But there is a way to avoid that.",{"type":19,"tag":20,"props":603,"children":604},{},[605,607,613,615,621],{"type":24,"value":606},"Move the parts of your configuration you don't want to be part of your local build into a new configuration file. I moved the following from my ",{"type":19,"tag":53,"props":608,"children":610},{"className":609},[],[611],{"type":24,"value":612},"_config.yml",{"type":24,"value":614}," into a new ",{"type":19,"tag":53,"props":616,"children":618},{"className":617},[],[619],{"type":24,"value":620},"_config-publish.yml",{"type":24,"value":622},":",{"type":19,"tag":186,"props":624,"children":628},{"code":625,"language":626,"meta":190,"className":627,"style":190},"autopages:\n  enabled: true\n  category:\n    enabled: true\n  tags:\n    enabled: true\n\npagination:\n  enabled: true\n","yml","language-yml shiki shiki-themes everforest-light dracula",[629],{"type":19,"tag":53,"props":630,"children":631},{"__ignoreMap":190},[632,647,665,677,693,705,720,730,743],{"type":19,"tag":197,"props":633,"children":634},{"class":199,"line":200},[635,641],{"type":19,"tag":197,"props":636,"children":638},{"style":637},"--shiki-default:#F57D26;--shiki-dark:#8BE9FD",[639],{"type":24,"value":640},"autopages",{"type":19,"tag":197,"props":642,"children":644},{"style":643},"--shiki-default:#939F91;--shiki-dark:#FF79C6",[645],{"type":24,"value":646},":\n",{"type":19,"tag":197,"props":648,"children":649},{"class":199,"line":216},[650,655,659],{"type":19,"tag":197,"props":651,"children":652},{"style":637},[653],{"type":24,"value":654},"  enabled",{"type":19,"tag":197,"props":656,"children":657},{"style":643},[658],{"type":24,"value":622},{"type":19,"tag":197,"props":660,"children":662},{"style":661},"--shiki-default:#DF69BA;--shiki-dark:#BD93F9",[663],{"type":24,"value":664}," true\n",{"type":19,"tag":197,"props":666,"children":667},{"class":199,"line":249},[668,673],{"type":19,"tag":197,"props":669,"children":670},{"style":637},[671],{"type":24,"value":672},"  category",{"type":19,"tag":197,"props":674,"children":675},{"style":643},[676],{"type":24,"value":646},{"type":19,"tag":197,"props":678,"children":679},{"class":199,"line":275},[680,685,689],{"type":19,"tag":197,"props":681,"children":682},{"style":637},[683],{"type":24,"value":684},"    enabled",{"type":19,"tag":197,"props":686,"children":687},{"style":643},[688],{"type":24,"value":622},{"type":19,"tag":197,"props":690,"children":691},{"style":661},[692],{"type":24,"value":664},{"type":19,"tag":197,"props":694,"children":695},{"class":199,"line":284},[696,701],{"type":19,"tag":197,"props":697,"children":698},{"style":637},[699],{"type":24,"value":700},"  tags",{"type":19,"tag":197,"props":702,"children":703},{"style":643},[704],{"type":24,"value":646},{"type":19,"tag":197,"props":706,"children":707},{"class":199,"line":333},[708,712,716],{"type":19,"tag":197,"props":709,"children":710},{"style":637},[711],{"type":24,"value":684},{"type":19,"tag":197,"props":713,"children":714},{"style":643},[715],{"type":24,"value":622},{"type":19,"tag":197,"props":717,"children":718},{"style":661},[719],{"type":24,"value":664},{"type":19,"tag":197,"props":721,"children":723},{"class":199,"line":722},7,[724],{"type":19,"tag":197,"props":725,"children":727},{"emptyLinePlaceholder":726},true,[728],{"type":24,"value":729},"\n",{"type":19,"tag":197,"props":731,"children":733},{"class":199,"line":732},8,[734,739],{"type":19,"tag":197,"props":735,"children":736},{"style":637},[737],{"type":24,"value":738},"pagination",{"type":19,"tag":197,"props":740,"children":741},{"style":643},[742],{"type":24,"value":646},{"type":19,"tag":197,"props":744,"children":746},{"class":199,"line":745},9,[747,751,755],{"type":19,"tag":197,"props":748,"children":749},{"style":637},[750],{"type":24,"value":654},{"type":19,"tag":197,"props":752,"children":753},{"style":643},[754],{"type":24,"value":622},{"type":19,"tag":197,"props":756,"children":757},{"style":661},[758],{"type":24,"value":664},{"type":19,"tag":20,"props":760,"children":761},{},[762],{"type":24,"value":763},"I also moved my Aloglia configuration block here too. Now a local build with unpublished content avoids turning up in the search index!",{"type":19,"tag":20,"props":765,"children":766},{},[767,769,775],{"type":24,"value":768},"It's important to remember to add ",{"type":19,"tag":53,"props":770,"children":772},{"className":771},[],[773],{"type":24,"value":774},"--config _config.yml,_config-publish.yml",{"type":24,"value":776}," to any Jekyll build steps on your CI server. For example, mine has:",{"type":19,"tag":186,"props":778,"children":780},{"code":779,"language":626,"meta":190,"className":627,"style":190},"- run:\n    name: Build site\n    command: bundle exec jekyll build --config _config.yml,_config-publish.yml 2>&1 | tee $JOB_RESULTS_PATH/build-results.txt\n",[781],{"type":19,"tag":53,"props":782,"children":783},{"__ignoreMap":190},[784,802,819],{"type":19,"tag":197,"props":785,"children":786},{"class":199,"line":200},[787,793,798],{"type":19,"tag":197,"props":788,"children":790},{"style":789},"--shiki-default:#35A77C;--shiki-dark:#FF79C6",[791],{"type":24,"value":792},"-",{"type":19,"tag":197,"props":794,"children":795},{"style":637},[796],{"type":24,"value":797}," run",{"type":19,"tag":197,"props":799,"children":800},{"style":643},[801],{"type":24,"value":646},{"type":19,"tag":197,"props":803,"children":804},{"class":199,"line":216},[805,810,814],{"type":19,"tag":197,"props":806,"children":807},{"style":637},[808],{"type":24,"value":809},"    name",{"type":19,"tag":197,"props":811,"children":812},{"style":643},[813],{"type":24,"value":622},{"type":19,"tag":197,"props":815,"children":816},{"style":238},[817],{"type":24,"value":818}," Build site\n",{"type":19,"tag":197,"props":820,"children":821},{"class":199,"line":249},[822,827,831],{"type":19,"tag":197,"props":823,"children":824},{"style":637},[825],{"type":24,"value":826},"    command",{"type":19,"tag":197,"props":828,"children":829},{"style":643},[830],{"type":24,"value":622},{"type":19,"tag":197,"props":832,"children":833},{"style":238},[834],{"type":24,"value":835}," bundle exec jekyll build --config _config.yml,_config-publish.yml 2>&1 | tee $JOB_RESULTS_PATH/build-results.txt\n",{"type":19,"tag":20,"props":837,"children":838},{},[839],{"type":24,"value":840},"and:",{"type":19,"tag":186,"props":842,"children":844},{"code":843,"language":626,"meta":190,"className":627,"style":190},"- run:\n    name: Index with Algolia\n    command: bundle exec jekyll algolia --config _config.yml,_config-publish.yml\n",[845],{"type":19,"tag":53,"props":846,"children":847},{"__ignoreMap":190},[848,863,879],{"type":19,"tag":197,"props":849,"children":850},{"class":199,"line":200},[851,855,859],{"type":19,"tag":197,"props":852,"children":853},{"style":789},[854],{"type":24,"value":792},{"type":19,"tag":197,"props":856,"children":857},{"style":637},[858],{"type":24,"value":797},{"type":19,"tag":197,"props":860,"children":861},{"style":643},[862],{"type":24,"value":646},{"type":19,"tag":197,"props":864,"children":865},{"class":199,"line":216},[866,870,874],{"type":19,"tag":197,"props":867,"children":868},{"style":637},[869],{"type":24,"value":809},{"type":19,"tag":197,"props":871,"children":872},{"style":643},[873],{"type":24,"value":622},{"type":19,"tag":197,"props":875,"children":876},{"style":238},[877],{"type":24,"value":878}," Index with Algolia\n",{"type":19,"tag":197,"props":880,"children":881},{"class":199,"line":249},[882,886,890],{"type":19,"tag":197,"props":883,"children":884},{"style":637},[885],{"type":24,"value":826},{"type":19,"tag":197,"props":887,"children":888},{"style":643},[889],{"type":24,"value":622},{"type":19,"tag":197,"props":891,"children":892},{"style":238},[893],{"type":24,"value":894}," bundle exec jekyll algolia --config _config.yml,_config-publish.yml\n",{"type":19,"tag":20,"props":896,"children":897},{},[898],{"type":19,"tag":73,"props":899,"children":900},{},[901],{"type":24,"value":902},"Verdict: Awesome, drops from 30s to 17s for full build.",{"type":19,"tag":41,"props":904,"children":906},{"id":905},"turn-off-comments-for-local",[907],{"type":24,"value":908},"Turn off comments for local",{"type":19,"tag":20,"props":910,"children":911},{},[912],{"type":24,"value":913},"I thought this would have more of an impact but, it only shaves a few seconds off the site build times.",{"type":19,"tag":20,"props":915,"children":916},{},[917,919,925,927,934],{"type":24,"value":918},"To do this add the following first and last lines to your ",{"type":19,"tag":53,"props":920,"children":922},{"className":921},[],[923],{"type":24,"value":924},"comments.html",{"type":24,"value":926}," include (I'll probably add this to the ",{"type":19,"tag":90,"props":928,"children":931},{"href":929,"rel":930},"https://github.com/damieng/jekyll-blog-comments",[94],[932],{"type":24,"value":933},"Jekyll Blog Comments system",{"type":24,"value":935},")",{"type":19,"tag":186,"props":937,"children":939},{"code":938,"language":189,"meta":190,"className":191,"style":190},"{% if site.comments.enabled %} ... (existing comments.html contents here) {%\nendif %}\n",[940],{"type":19,"tag":53,"props":941,"children":942},{"__ignoreMap":190},[943,951],{"type":19,"tag":197,"props":944,"children":945},{"class":199,"line":200},[946],{"type":19,"tag":197,"props":947,"children":948},{"style":302},[949],{"type":24,"value":950},"{% if site.comments.enabled %} ... (existing comments.html contents here) {%\n",{"type":19,"tag":197,"props":952,"children":953},{"class":199,"line":216},[954],{"type":19,"tag":197,"props":955,"children":956},{"style":302},[957],{"type":24,"value":958},"endif %}\n",{"type":19,"tag":20,"props":960,"children":961},{},[962,964,969],{"type":24,"value":963},"and remember to add this to your ",{"type":19,"tag":53,"props":965,"children":967},{"className":966},[],[968],{"type":24,"value":620},{"type":24,"value":622},{"type":19,"tag":186,"props":971,"children":973},{"code":972,"language":626,"meta":190,"className":627,"style":190},"comments:\n  enabled: true\n",[974],{"type":19,"tag":53,"props":975,"children":976},{"__ignoreMap":190},[977,989],{"type":19,"tag":197,"props":978,"children":979},{"class":199,"line":200},[980,985],{"type":19,"tag":197,"props":981,"children":982},{"style":637},[983],{"type":24,"value":984},"comments",{"type":19,"tag":197,"props":986,"children":987},{"style":643},[988],{"type":24,"value":646},{"type":19,"tag":197,"props":990,"children":991},{"class":199,"line":216},[992,996,1000],{"type":19,"tag":197,"props":993,"children":994},{"style":637},[995],{"type":24,"value":654},{"type":19,"tag":197,"props":997,"children":998},{"style":643},[999],{"type":24,"value":622},{"type":19,"tag":197,"props":1001,"children":1002},{"style":661},[1003],{"type":24,"value":664},{"type":19,"tag":20,"props":1005,"children":1006},{},[1007],{"type":19,"tag":73,"props":1008,"children":1009},{},[1010],{"type":24,"value":1011},"Verdict: Okay, drops from 17s to 15s for full build.",{"type":19,"tag":41,"props":1013,"children":1015},{"id":1014},"conclusion",[1016],{"type":24,"value":1017},"Conclusion",{"type":19,"tag":20,"props":1019,"children":1020},{},[1021],{"type":24,"value":1022},"With these steps, my site has gone from almost 50 seconds to about 17 for a full build without incremental. With incremental, that now means about 1-2 seconds!",{"type":19,"tag":20,"props":1024,"children":1025},{},[1026],{"type":24,"value":1027},"I can't wait for WSL2 to push this over the edge!",{"type":19,"tag":20,"props":1029,"children":1030},{},[1031],{"type":19,"tag":73,"props":1032,"children":1033},{},[1034],{"type":24,"value":1035},"[)amien",{"type":19,"tag":1037,"props":1038,"children":1039},"style",{},[1040],{"type":24,"value":1041},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":190,"searchDepth":216,"depth":216,"links":1043},[1044,1045,1046,1047,1048,1049],{"id":43,"depth":216,"text":46},{"id":80,"depth":216,"text":83},{"id":110,"depth":216,"text":113},{"id":593,"depth":216,"text":596},{"id":905,"depth":216,"text":908},{"id":1014,"depth":216,"text":1017},"markdown","content:blog:2019:wordpress-to-jekyll-faster.md","content","blog/2019/wordpress-to-jekyll-faster.md","blog/2019/wordpress-to-jekyll-faster","md","/blog/2019/wordpress-to-jekyll-faster/",788,0,[1060,1064,1068],{"title":1061,"date":1062,"url":1063},"HTML5 Video Cheatsheet: Optimizing videos for the web","2025-12-05T00:00:00Z","/blog/2025/html5-video-cheatsheet/",{"title":1065,"date":1066,"url":1067},"Transactions in the MongoDB EF Core Provider","2025-10-25","/blog/2025/mongodb-explicit-transactions/",{"title":1069,"date":1070,"url":1071},"Queryable Encryption with the MongoDB EF Core Provider","2025-09-22","/blog/2025/mongodb-queryable-encryption/",[],1779224642398]