A method for page personalization, comprising: identifying a user operating a client; receiving a request for page data from the client; determining a user profile associated with the user, the user profile defining weights indicating levels of interest for features of articles, the weights being determined from historical dwell times of articles previously presented to the user, wherein the historical dwell time for a given article is determined by analyzing events logged in a client-side beacon during the presentation of the given article to the user, the events being logged in the client-side beacon by a page event module included in page data defining a respective web page, wherein analyzing the events includes determining time periods (214, 218) during which the given article was actively displayed in a tab of a browser and summing the time periods to determine a total dwell time during a time of availability defined by the presentation of the given article, the client-side beacon being received from a device on which the given article was presented to the user; for each of a plurality of articles, predicting a dwell time of the article when presented to the user, based on the user profile and features of the article, wherein the predicted dwell time of the article is defined by an expected amount of time that the article will be actively displayed in a browser session of the user; determining selected articles from the plurality of articles based on the predicted dwell times; assembling the page data, the page data defining a page when rendered by the client, the rendered page defining references to the selected articles; sending the page data to the client; wherein the method is executed by a processor. identifying a user operating a client; receiving a request for page data from the client; determining a user profile associated with the user, the user profile defining weights indicating levels of interest for features of articles, the weights being determined from historical dwell times of articles previously presented to the user, wherein the historical dwell time for a given article is determined by analyzing events logged in a client-side beacon during the presentation of the given article to the user, the events being logged in the client-side beacon by a page event module included in page data defining a respective web page, wherein analyzing the events includes determining time periods (214, 218) during which the given article was actively displayed in a tab of a browser and summing the time periods to determine a total dwell time during a time of availability defined by the presentation of the given article, the client-side beacon being received from a device on which the given article was presented to the user; for each of a plurality of articles, predicting a dwell time of the article when presented to the user, based on the user profile and features of the article, wherein the predicted dwell time of the article is defined by an expected amount of time that the article will be actively displayed in a browser session of the user; determining selected articles from the plurality of articles based on the predicted dwell times; assembling the page data, the page data defining a page when rendered by the client, the rendered page defining references to the selected articles; sending the page data to the client; wherein the method is executed by a processor.