2018 年網站報告

2019 年 7 月 10 日



在 2019 年初,審查 martinfowler.com 的狀態似乎是個好主意。我在 2014 年 對網站進行了簡短的審查,因此現在是再次檢視它所產生的流量的好時機了。

整體流量

我將從過去幾年的整體網站流量開始

年份每月瀏覽量每月造訪量每月訪客數造訪總數瀏覽總數
2011302,732207,684138,9722,557,7033,671,818
2012354,282226,270153,2042,802,1014,238,904
2013408,182254,515173,0623,047,0464,848,783
2014491,761339,570222,8003,984,2465,855,504
2015575,146404,062263,6464,991,1617,058,432
2016626,873453,887298,1825,594,0107,657,711
2017647,714480,498312,3145,867,2577,916,532
2018713,802519,731334,2606,256,3748,457,847

每月數據為該年的每月中位數總計。總計數據為該年的總計。

過去幾年的流量穩步增加。

透過按年查看可以提供一個觀點,但查看每日瀏覽量也很方便。

這可以更清楚地了解流量的每日波動。它也清楚地顯示了一般模式 - 該網站的平日(人們工作時)流量明顯高於週末。流量在週末下降約一半是相當一致的。

這裡的流量還有另一個規律模式,在該圖表上較難看到,但僅顯示平日瀏覽量時會更明顯。

由於聖誕假期,在年底時會明顯下降,這會將平日流量降至週末水準。

專注於長青文章

整體流量數字是一回事,但它們是否能很好地衡量我真正關心的事項?我的目標是撰寫(並發布)對我的讀者在一段時間內有用的文章。當一篇文章獲得持續的流量時,我覺得我成功了,所以我認為繪製我有多少這樣的文章是有用的。我選擇每月 1000 個唯一頁面瀏覽量作為我的整數切斷點。

這顯示了一個更令人擔憂的趨勢。直到 2016 年左右,此類熱門文章才快速增加,當時情況已達到平穩期。這並不令人意外,因為這與我開始專注於重構書籍的時間相符。希望隨著我開始更關注網站,我可以開始看到一些我在 2016 年之前看到的增長。

當我在尋找獲得此類流量的文章時,我正在尋找已經存在一段時間的文章。大多數文章的流量會急劇下降,在最初幾天獲得大量流量,然後隨著時間推移逐漸減少。

自 2018 年以來發布的所有文章,文章年齡與中位數瀏覽次數(工作日)

請注意,即使在 y 軸上使用平方根比例,也能看到急劇的指數下降!

儘管中位數文章在發布後大約一個月內每天的瀏覽量會降至 50 次以下,但我感興趣的文章並非如此。(每工作日獲得 28 次瀏覽量的文章大致相當於每月 1000 次瀏覽量。)

因此,我提出了常青文章的個人定義。一篇至少有一年的文章,其每月平均獨立頁面瀏覽量超過 1000 次,並且至少有四個月的瀏覽量超過 1000 次。如果我將此測試應用於我網站上的文章,我將得到 170 篇合格的文章。

路徑20112012201320142015201620172018
/2074619635205902245625014278532776330201
/aboutMe.html32733280354635763600337032883786
/agile.html41043714415640183896392338474691
/articles.html196812207965184823546448
/articles/201701-event-driven.html33143748
/articles/201708-tw-sale.html1911339
/articles/201803-refactoring-2nd-ed.html2006
/articles/agile-aus-2018.html16243
/articles/agileFluency.html1541197014411604144114963522
/articles/agileOffshore.html1748125811061071905748494392
/articles/apple-notes-restore.html11611302909326180
/articles/architect-elevator.html2194530
/articles/asyncJS.html2324171223641540714484
/articles/bigData/19810301871501448699
/articles/break-monolith-into-microservices.html10945
/articles/collection-pipeline/46571522160518442208
/articles/consumerDrivenContracts.html54068265325124286459655475395
/articles/continuousIntegration.html134391097411057114121078010604102789868
/articles/designDead.html33533168335632053086194719491754
/articles/dipInTheWild.html1606810793960919900
/articles/distributed-objects-microservices.html176010001026856825
/articles/enterprisePatterns.html103692390512471244125212481402
/articles/enterpriseREST.html1639124882368169215491214
/articles/evodb.html26052338255421981974180029143026
/articles/extract-data-rich-service.html4350
/articles/feature-toggles.html6501846612780
/articles/injection.html3021226616290192894625110247202352821862
/articles/is-tdd-dead/62243080224617201482
/articles/itsNotJustStandingUp.html46466096562459665395846875787514
/articles/languageWorkbench.html1162858636600548470376346
/articles/lean-inception/11551153
/articles/lmax.html119825920578853274587368435033752
/articles/microservice-testing/1450654568220107599480
/articles/microservice-trade-offs.html3015297229753164
/articles/microservices.html3239145709487794355738270
/articles/mobileImplStrategy.html1094421169139826242
/articles/mocksArentStubs.html976010314110021155412416119391074810919
/articles/modernMockingTools.html21602622442041349888
/articles/multiMobile/274412163701781136839
/articles/newMethodology.html75324480405436243692281821401830
/articles/nonDeterminism.html106183090611041112116012601282
/articles/nosqlKeyPoints.html1820720502470345241260
/articles/practical-test-pyramid.html11192
/articles/products-over-projects.html176663200
/articles/rake.html2648215618892080186611901077980
/articles/refactoring-2nd-changes.html1444
/articles/refactoring-2nd-ed.html10851
/articles/refactoring-dependencies.html2605542543521
/articles/refactoring-pipelines.html2207840870823
/articles/refactoring-video-store-js/26341142814
/articles/replaceThrowWithNotification.html116728148748911047
/articles/richardsonMaturityModel.html24903584492668549357109761234613037
/articles/rise-test-impact-analysis.html2338606
/articles/serverless.html245141924721276
/articles/talk-about-platforms.html1314
/articles/testing-culture.html2298803584412421
/articles/useOfMetrics.html920158014011338964772
/articles/vagrant-chef-rbenv.html132783626414865
/articles/web-security-basics.html1080050344404
/bliki/29142684285527572839246219581646
/bliki/AnemicDomainModel.html27543040346437874194452943964806
/bliki/AntiPattern.html1006148124138
/bliki/BlueGreenDeployment.html31354484919033724630071647304
/bliki/BoundedContext.html21263916510666128450
/bliki/BranchByAbstraction.html20720433410681174135913391650
/bliki/BusinessReadableDSL.html625893109512541316772823510
/bliki/CanaryRelease.html7221412280338065420
/bliki/CircuitBreaker.html21013583540975818850
/bliki/CodeSmell.html3205766646968229168111012
/bliki/CommandQuerySeparation.html4607387809101013107313301524
/bliki/ContinuousDelivery.html89316752590312029532332
/bliki/ContinuousIntegrationCertification.html1880546
/bliki/ContractTest.html1904
/bliki/CQRS.html5380687869031061414153157961937321914
/bliki/DataLake.html121512281305946
/bliki/DDD_Aggregate.html35410141486187922922924
/bliki/DeploymentPipeline.html64512821496190415821428
/bliki/DevOpsCulture.html1017131813661408
/bliki/DomainSpecificLanguage.html12671012822771748755689591
/bliki/FeatureBranch.html14261494163620372402224723602476
/bliki/FeatureToggle.html9081356191329303842361225362047
/bliki/FluentInterface.html17061632189218821886182017981776
/bliki/GivenWhenThen.html80911681752286634244476
/bliki/ImmutableServer.html87869087612561176858
/bliki/index.html35783536274134145724221
/bliki/IntegrationContractTest.html1059120028869910421204
/bliki/IntegrationTest.html2741
/bliki/InversionOfControl.html19161761187318442370249320081986
/bliki/MemoryImage.html5413255121122116240454339
/bliki/MicroservicePremium.html2010139816581724
/bliki/MicroservicePrerequisites.html20161091121719422220
/bliki/MonolithFirst.html2997202025442948
/bliki/NosqlDistilled.html1569
/bliki/OrmHate.html69675410421590151911721264
/bliki/PageObject.html152822443147429645884100
/bliki/PolyglotPersistence.html52551876240426163052260925902311
/bliki/PresentationDomainDataLayering.html2092579484530
/bliki/ReportingDatabase.html16837038276284692610521026
/bliki/RulesEngine.html485926118214181614183920961676
/bliki/Serverless.html1075615470
/bliki/ShuHaRi.html8713131047480997011211158
/bliki/StranglerApplication.html2632994646691173207025843321
/bliki/TechnicalDebt.html17241486166719492055228720371964
/bliki/TechnicalDebtQuadrant.html8396827809551356135914481746
/bliki/TellDontAsk.html8228701139137416151841
/bliki/TestCoverage.html7617049291210152215341688
/bliki/TestDouble.html3363474987421102139016452176
/bliki/TestPyramid.html630115022853127449864846784
/bliki/TolerantReader.html86544915202318208720531680
/bliki/TwoHardThings.html396840233031594330447044624888
/bliki/UbiquitousLanguage.html341194921192897113514181792
/bliki/UnitTest.html16371612183619782119
/bliki/ValueObject.html1826946489701240131421562308
/bliki/Yagni.html2374179022352448
/books.html159568319
/books/4276402825892368243422572159
/books/buying.html1248125611131114948930934
/books/continuousDelivery.html46682211881788178217231543
/books/dsl.html1364176219612107188419682016
/books/eaa.html6521743176667546689064465960
/books/nosql.html27922536203819041130892778
/books/refactoring.html1214164229423302359938064602
/delivery.html13941964212924662959170713641282
/design.html55925424664071726862696272787614
/dsl.html29082230222720691943522464410
/eaaCatalog/57155830567855265184514348984450
/eaaCatalog/activeRecord.html15151600167817921650150713781216
/eaaCatalog/classTableInheritance.html6498771012940960872820694
/eaaCatalog/dataMapper.html28882917286625322412223520041608
/eaaCatalog/dataTransferObject.html16451895227725372878292629352906
/eaaCatalog/domainModel.html24072526250824932501270026252507
/eaaCatalog/frontController.html1040976762623536486451368
/eaaCatalog/index.html28902718266027982586232924122030
/eaaCatalog/repository.html37684569462046585216558657435032
/eaaCatalog/serviceLayer.html18201772189818342138213820541806
/eaaCatalog/singleTableInheritance.html1057124213781402134211811081862
/eaaCatalog/tableDataGateway.html162613901130964887794743606
/eaaCatalog/transactionScript.html12821408153416061524164317221701
/eaaCatalog/twoStepView.html12921132776658474356293216
/eaaCatalog/unitOfWork.html32883926412042344002422239333325
/eaaDev/8107806257511116105411071092
/eaaDev/AuditLog.html4566495505803272557501236
/eaaDev/DomainEvent.html43839041255259270510961152
/eaaDev/EventAggregator.html9821040113210121004950942942
/eaaDev/EventCollaboration.html51750734466874298011541197
/eaaDev/EventNarrative.html12012411614420087811551151
/eaaDev/EventSourcing.html25913628404658287549104121292816230
/eaaDev/ModelViewPresenter.html175813901156867706514458336
/eaaDev/Notification.html1004955248165316302254274
/eaaDev/PassiveScreen.html23402011176514681306124815201286
/eaaDev/PresentationModel.html44073760323230473356221521121778
/eaaDev/SupervisingPresenter.html22031770162513301203944786610
/eaaDev/timeNarrative.html6806536527621065922892840
/eaaDev/uiArchs.html73667840670974507590674157584506
/intro.html36483695397940443928387840604496
/microservices/10470819490237518
/nosql.html412365345645518220191110904
/photos/109.html1107
/photos/112.html1517
/refactoring/6585774077987560830875488175
/refactoring/catalog/832118335043398410240013749
/refactoring/catalog/extractMethod.html7228549501134117412101223
/refactoring/catalog/index.html30573359761591409318302
/refactoring/catalog/replaceConditionalWithPolymorphism.html665742718797109311871201
/refactoring/catalog/replaceNestedConditionalWithGuardClauses.html300368594812100615321698
/refactoring/catalog/replaceRecursionWithIteration.html5016168361183137210841059
/refactoring/sources.html17652118
/tags/API design.html33637454283792410681314962
/tags/domain driven design.html14317047315022240289233733012
/videos.html3504366038923540

每年顯示該年的每月平均不重複造訪人次,若超過 1000 則以綠色標示。

其他作者

由於過去兩年我專注於重構書籍,因此 martinfowler.com 上發布的許多文章都是由其他人撰寫。這些文章仍然花費我不少時間,我擔任開發編輯,並會花費大量時間處理這些文章。

當我準備回到網站時,一個合理的問題是,由其他人撰寫的文章與我撰寫的文章之間是否有差異。

為了探討這個問題,我收集了 2011 年至 2017 年間發布的所有文章,並將其分為由我撰寫(作為作者或其中一位作者)的文章,以及由其他人撰寫的文章。然後,我繪製了它們在 2018 年的每月平均瀏覽次數。

我將 y 軸切在每月 5000 次瀏覽次數,因此少數流量比這更高的異常值不會壓縮箱型圖,讓您無法讀取。資料仍然會提供箱型圖標記。

正如您所見,由其他人撰寫的文章平均來說比我寫得更好,由其他人撰寫的平均文章獲得 586 次瀏覽,而我則為 167 次。在此期間的文章中,我的有 26 篇平均每月瀏覽次數超過 1000 次,而其他作者則有 10 篇。當然,這裡有很多選擇偏差。我們投入大量工作來處理其他人撰寫的所有文章,而我的許多文章則較為隨意,導致我的許多文章瀏覽次數較低。但我可以由此得出結論,與其他人合作在 martinfowler.com 上發布文章,與專注於我自己的寫作相比,是值得付出的努力。

主題頁面

作為準備更新我網站導覽選單的一部分,我想看看各種主題頁面的熱門程度。

我不想過度解讀這一點,因為這是一個相當狹窄的數據點。目前有三個層級的熱門程度。重構、設計和微服務頁面位於頂層。(儘管微服務頁面似乎正在下降到第二層。)第二層是敏捷、網站簡介和關於頁面。最底層的三個是交付、DSL 和 NoSQL 頁面,後者在 2014 年大幅上漲,隨後穩步下降。

長青文章的時代

關於此網站要記住的重要事項之一是,許多熱門文章都較舊。以下是 2018 年常青頁面的發布日期。

年份計數
20006
200314
20043
20056
20069
20093
20103
20116
20128
20137
201415
20157
20164
20173
20189

這 103 頁中的 38 頁最初是在十多年前發布的。(我從此清單中刪除了導覽頁面,例如首頁。)


重大修訂

2019 年 7 月 10 日:新增常青樹的年齡

2019 年 4 月 11 日:新增主題圖表

2019 年 3 月 7 日:首次發布