inclue all content for ease of editing
This commit is contained in:
		
							parent
							
								
									3f008be16c
								
							
						
					
					
						commit
						0cafd7545d
					
				
							
								
								
									
										11
									
								
								README.md
								
								
								
								
							
							
						
						
									
										11
									
								
								README.md
								
								
								
								
							| 
						 | 
					@ -3,8 +3,15 @@
 | 
				
			||||||
A Markdown renderer on the Compute@Edge platform from Fastly.
 | 
					A Markdown renderer on the Compute@Edge platform from Fastly.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The main source file, `src/main.rs`, contains all the code for the renderer.
 | 
					The main source file, `src/main.rs`, contains all the code for the renderer.
 | 
				
			||||||
The header and footer files I use are included at `content/_header.md` and
 | 
					The content on the server is stored in `content/` for convenience.
 | 
				
			||||||
`content/_footer.md` for easy inspection.
 | 
					
 | 
				
			||||||
 | 
					## Deploying Content
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Simply use `scp` to copy the files to the server:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					scp -r ./content/* example.com:/var/www-html/edgeblog/
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Nginx Configuration
 | 
					## Nginx Configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					# About the Author
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This very silly application was written by Leonora Tindall.
 | 
				
			||||||
 | 
					You can find her other work at [nora.codes](https://nora.codes),
 | 
				
			||||||
 | 
					or find her on [Twitter](https://twitter.com/NoraDotCodes)
 | 
				
			||||||
 | 
					and on the Fediverse at [Weirder Earth](https://weirder.earth/@noracodes).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Thanks for visiting!
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]-->
 | 
				
			||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					<title>with_cache</title>
 | 
				
			||||||
 | 
					<meta charset="utf-8"/>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body><div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{"highlight":"#0000ff","nav":true,"resize":true,"toolbar":"zoom layers tags lightbox","edit":"_blank","xml":"<mxfile host=\"app.diagrams.net\" modified=\"2022-09-20T15:36:42.143Z\" agent=\"5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36\" etag=\"m59Sz5y0B9XURcQJF8E1\" version=\"20.3.1\" type=\"device\"><diagram id=\"Xpad1kBT1G1nm2uLucKE\" name=\"Page-1\">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</diagram></mxfile>"}"></div>
 | 
				
			||||||
 | 
					<script type="text/javascript" src="https://viewer.diagrams.net/js/viewer-static.min.js"></script>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 61 KiB  | 
| 
						 | 
					@ -0,0 +1,51 @@
 | 
				
			||||||
 | 
					### What?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This page is written in Markdown (actually in three Markdown files).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These Markdown files are requested by Fastly's Compute@Edge engine and rendered into
 | 
				
			||||||
 | 
					HTML at the edge, on every request.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can check out the source code [here](https://git.nora.codes/nora/edgeblog).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The only dependency of the service, other than the Fastly SDK,
 | 
				
			||||||
 | 
					is Raph Levien's [`pulldown-cmark`][pulldown_cmark].
 | 
				
			||||||
 | 
					It's not an optimal choice, as it only supports one-shot rendering and requires buffering
 | 
				
			||||||
 | 
					the Markdown (though not the resulting HTML) in memory, but it's the best option available
 | 
				
			||||||
 | 
					at the moment.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[pulldown_cmark]: https://github.com/raphlinus/pulldown-cmark 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[](images/diagram.html)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The renderer takes advantage of the fact that Markdown allows embedding raw HTML by embedding
 | 
				
			||||||
 | 
					anything with a "text" MIME type in the Markdown source, while passing through anything
 | 
				
			||||||
 | 
					without a "text" MIME type - images, binary data, and so forth - unchanged.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					That allows the above JPG image to embed properly, while also allowing the linked SVG image page
 | 
				
			||||||
 | 
					to be rendered as a component of a Markdown document.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Why?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I work on the Compute@Edge platform and wanted to get some hands on experience with it.
 | 
				
			||||||
 | 
					This is not a good use of the platform for various reasons; among other things,
 | 
				
			||||||
 | 
					it buffers all page content in memory for every request, which is ridiculous.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A static site generator like [Hugo][hugo] or [Zola][zola] is an objectively better choice
 | 
				
			||||||
 | 
					for bulk rendering, while the C@E layer is better for filtering, editing, and dynamic content.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[hugo]: https://gohugo.io/
 | 
				
			||||||
 | 
					[zola]: https://www.getzola.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					That said, this does demonstrate some interesting properties of the C@E platform.
 | 
				
			||||||
 | 
					For instance, the source files are hosted in [a subdirectory][source] of my webserver;
 | 
				
			||||||
 | 
					in theory, you could directory-traverse your way into my blog source, but in fact,
 | 
				
			||||||
 | 
					you can't.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[source]: https://nora.codes/edgeblog/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I also have a [Clacks Overhead][clacks] set for my webserver, and the C@E platform
 | 
				
			||||||
 | 
					is set up to make passing through existing headers trivial even with entirely
 | 
				
			||||||
 | 
					synthetic responses like these, so that header is preserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[clacks]: https://xclacksoverhead.org/home/about
 | 
				
			||||||
		Loading…
	
		Reference in New Issue