[HN Gopher] Cloudflare Pages: Best server tech since CGI-bin?
___________________________________________________________________
Cloudflare Pages: Best server tech since CGI-bin?
Author : mehal
Score : 242 points
Date : 2022-10-23 16:03 UTC (6 hours ago)
(HTM) web link (taras.glek.net)
(TXT) w3m dump (taras.glek.net)
| jasonhansel wrote:
| Why not just make it CGI (or FastCGI) compatible so you can test
| it locally or run it in other environments? At least for things
| that are actually generating responses rather than acting as
| middleware.
|
| Oh, right, vendor lock-in.
| mfer wrote:
| It's different that than vendor lock-in.
|
| For example you have security. CGI with multitenants is hard if
| not impossible. At least for the tenants that will want to use
| this.
|
| Then there is scaling, resource consumption, and predictability
| (for planning).
| kentonv wrote:
| The engine is open source:
| https://github.com/cloudflare/workerd
|
| We did not create our own engine to create "lock-in". On the
| contrary, it would be a huge win for us if we could simply run
| FastCGI or Node or whatever applications unmodified. We'd be
| able to onboard a lot more customers more quickly that way! Our
| product is our physical network (with hundreds of locations
| around the world), not our specific development environment.
|
| But none of that tech scales well enough that we could run
| every app in every one of our locations at an affordable price.
| Meeting that goal required new tech. The best we could do is
| base it on open standard APIs (browser APIs, mostly), so a lot
| of code designed for browsers ports over nicely.
|
| (I'm the lead engineer for Workers. These were my design
| choices, originally.)
| spiffytech wrote:
| Are there guides for application architecture with Workers?
|
| I'm interested in Durable Objects but I don't know how to
| work within the 50-subrequest limit on the Free or Bundled
| plans.
|
| It sounds like I can only read from 50 Durable Objects or KV
| queries in a single request. If my usage pattern is e.g.,
| sharing docs with many users, how would I let more than 50
| users access a doc?
|
| Whether I consider fanning out on writes or fanning in on
| reads I'd need more than 50 subrequests. How should I
| approach this?
| kentonv wrote:
| Hmm, I think there are several different reasons why the
| subrequest limit actually doesn't apply to your scenario.
|
| First, Durable Objects and Workers KV requests do not count
| against the 50-subrequest limit. It's HTTP requests to
| external servers that count.
|
| Second, with the Unbound billing model, the limit is now
| 1000. The old "Bundled" billing model is really intended
| for "configure your CDN" use cases where you're mostly just
| rewriting a request or response and proxying to origin. For
| whole applications you should use Unbound. (Note that with
| Durable Objects, the objects themselves always use the
| Unbound pricing model.)
|
| Third, to address your specific scenario:
|
| > If my usage pattern is e.g., sharing docs with many
| users, how would I let more than 50 users access a doc?
|
| If you mean you have 50+ users connected via WebSockets and
| you need to send a message to each one -- these messages
| (on already-open WebSockets) do not count against the
| subrequest limit. Only starting a whole new HTTP request or
| new WebSocket would count.
|
| And for "fan in", these would be incoming requests from
| client, but the subrequest limit applies to outgoing
| request. There's no limit on number of incoming requests.
| spiffytech wrote:
| > First, Durable Objects and Workers KV requests do not
| count against the 50-subrequest limit. It's HTTP requests
| to external servers that count.
|
| Ahhh, somehow I got the idea that requests from a Worker
| to Durable Objects and KV counted against subrequests.
| This changes things!
|
| > If you mean you have 50+ users connected via WebSockets
| and you need to send a message to each one
|
| I was thinking of, a client requests "give me a list of
| my documents" or "share this document with Alice, Bob, et
| al.", and the Worker that receives that request has to
| handle that somehow. I thought that was tough to do in 50
| subrequests, but it's easy if I can just make an
| unbounded number requests to different Durable Objects or
| KV records.
|
| Edit: I found what gave me the idea about subrequests.
| From the Workers docs:
|
| > For subrequests to internal services like Workers KV
| and Durable Objects, the subrequest limit is 1000 per
| request, regardless of usage model.
|
| https://developers.cloudflare.com/workers/platform/limits
| /#h...
| 9dev wrote:
| Hey, just wanted to leave this here. It's pure joy to work
| with Pages. I recently did a new homepage for my mom's beauty
| salon and decided to use CF Pages, with a few functions for
| booking requests and a contact form. It felt just... right.
| Everything fell into place as I would have liked it to. Hits
| the sweet spot between flexibility and pragmatism, in a way.
|
| Enjoy your week! :)
| pjkundert wrote:
| You can run workerd locally.
| solardev wrote:
| You can pretty easily change from Cloudflare to any other
| Jamstack host.
|
| Cgi just isn't necessary anymore and would be more baggage than
| anything at this point.
|
| The old web stacks are just time sinks. It's so much nicer to
| be able to git push... And that's it. Done.
| harryvederci wrote:
| > It's so much nicer to be able to git push... And that's it.
| Done.
|
| Can you elaborate? My CGI-based website is deployed with `git
| push` as well, not sure what the difference is there.
| 9dev wrote:
| Is it, though? Who does git pull at the server? What
| happens to in-flight requests during deployments? Traffic
| surges? Requests from Nigeria?
| solardev wrote:
| How's your hosting stack set up? The Jamstack vendors are
| zero config or maintenance
| alehlopeh wrote:
| Forgive my digression but for years I've seen small efforts
| here and there to elevate the concept of a "stack" and
| promote it as the level abstraction to use when discussing
| web apps and the like. What's up with that?
|
| Grab any 3 commonly used pieces of technology whose names can
| be used to form a fun initialism, append stack to the end,
| and soon there will be experts speaking at conferences
| dedicated to it. JamStack is an example you mentioned. I've
| heard others over the years.
|
| I disagree that it's a useful unit of thought. No one I know
| or work with ever talks about "web stacks" this way. Am I
| missing something here? Is this just some kind of niche?
| Who's marketing these?
| solardev wrote:
| What else would you call the well, stack, of technologies
| used to host a website? It's not a marketing term, just a
| way to describe the multiple layers. From hardware to
| network routing to DNS to tcp/up to http to https to HTML
| to JS to workers, and also Linux and PHP and a web server
| like Apache or nginx and a database like Maria or Postgres
| and maybe a cache like Redis or memcached and maybe squid
| and Varnish in front of it... that's a stack.
|
| Jamstack is just a particular configuration where vendors
| take care of all of that and you can push up frontend code
| that auto deploys and that's that. I used to have to manage
| the whole stack and now can work purely in HTML CSS and JS
| and it is a DREAM. That's the magic of the Jamstack. Less
| devops and network infrastructure, more time to focus on UX
| and DX.
|
| As for vendors, there's Vercel, Netlify, Gatsby, maybe a
| few others. Cloudflare, Deno, and Fly, Render and a few
| others have similar variations.
|
| It's a really nice way to work...
| ameliaquining wrote:
| Jamstack in particular is not really an example of that; it
| is more of a kind of architecture than a specific stack, in
| that it doesn't prescribe the use of specific software. An
| architecture where all the HTML/CSS/JS is precompiled
| statically for maximum cacheability, and server-side
| dynamic behavior happens exclusively within AJAX calls that
| return structured data, is a natural kind, and useful to
| have a term for so that we can compare and contrast it to
| other ways of building web apps.
|
| More broadly, other acronym stacks are a thing because
| complementary technologies cluster together, especially in
| relatively immature ecosystems. E.g., PHP traditionally had
| better support for mySQL than for competing databases, so
| if you were building an app in PHP, you probably used mySQL
| for data storage. These effects may have weakened over time
| as the graph of ecosystem integrations has grown more
| complete (and indeed I feel like I hear less about acronym
| stacks these days than I did half a decade ago), but I
| don't think they've died out entirely.
| int_19h wrote:
| The reason why PHP was bundled with MySQL historically is
| not so much because it had better support for it, but
| rather because cheap & free hosting would generally offer
| MySQL (rather than, say, Postgres) - because it was
| easier for _them_. If SQLite showed up a bit earlier, I
| bet that would have become the standard.
| megous wrote:
| It's been around since forever. Things like LAMP (Linux
| Apache MySQL PHP), etc.
| qbasic_forever wrote:
| For better or worse fast CGI never took off much beyond PHP.
| Python, node, ruby, etc. all do their own thing with their own
| app servers and protocols. I mean sure something like python
| can use fast CGI but no one in that community uses it that way,
| everyone uses uWSGI, gunicorn, etc.
|
| Plain old CGI doesn't scale beyond toy usage--it spawns a
| process per request.
|
| So there really isn't a good single option for Cloudflare to
| use.
| rakoo wrote:
| > Plain old CGI doesn't scale beyond toy usage--it spawns a
| process per request.
|
| I'd be willing to bet the opposite: CGI is more than enough
| for 80% of workload, performance-wise.
|
| There are a few good reasons why CGI isn't the best today:
| the tooling doesn't exist, the security model is really bad,
| and you can cram fewer websites on a single machine, so for
| the same number of websites you need more machines, and
| that's an ecological aberration. But there is no problem
| about CGI being too slow.
| qbasic_forever wrote:
| Sure but developers don't want to bifurcate their service
| code and releases into a simple version using CGI and a
| dedicated app server version for when CGI doesn't scale for
| them or their users. They just want to write one python web
| app and run it everywhere.
|
| There's no way a CGI app can reach a million requests a
| second on the same hardware that a nodejs (single thread,
| worker loop) would take to do 1M RPS. Processes have a lot
| of overhead. Almost no one needs 1M RPS but it cannot be
| waived away that CGI is perfect for everything.
| ameliaquining wrote:
| Because V8's low-overhead tenant isolation is fundamental to
| how Cloudflare Workers works[1], and without it it would be a
| completely different product with worse performance. This means
| it can only support JavaScript and WebAssembly.
|
| You can run it locally[2], and efforts are underway to
| standardize much of it so that the same code can run on
| Workers, Node.js, and Deno[3]. The Workers runtime is also open
| source[4], although in practice this is likely to be less
| useful for most use cases than just using one of the other
| JavaScript runtimes if you're self-hosting.
|
| [1] https://developers.cloudflare.com/workers/learning/how-
| worke... [2]
| https://developers.cloudflare.com/pages/platform/functions#d...
| [3] https://wintercg.org/ [4]
| https://github.com/cloudflare/workerd
| hackyhacky wrote:
| Potentially stupid question: how is this different from hosting a
| static site on S3 and using CloudFront as a CDN? Assuming I don't
| need server-side JS, I don't see the benefit.
| donmcronald wrote:
| IMHO, when I use AWS I feel like I spend a lot of time dealing
| with the infrastructure. For example, you have to create the
| bucket, add IAM users that can deploy to it, set up CI that can
| do that deploy, configure CloudFront, etc..
|
| With CloudFlare Pages you click a couple buttons in the UI and
| push to GitHub. When I tested it, I didn't get bogged down
| managing infrastructure which I've always struggled with
| (overthinking) in the past. I was almost instantly writing code
| that solves my problem(s).
|
| The advantages aren't as huge with a purely static site, but
| they're still there IMO.
| truthwhisperer wrote:
| schwartzworld wrote:
| > As a shortcut, I used GPT-3 to generate a basic typescript
| function for me.
|
| I'd love to see a more detailed post about that. I don't know any
| TS devs using that kind of workflow.
| Filligree wrote:
| To write functioning code, you need to know how to write
| functioning code.
|
| The biggest issue with Copilot is that, to use it well, you
| need to know:
|
| - How to write functioning code.
|
| - How to quickly review other people's code for correctness.
|
| - How to write good comments.
|
| - How to tweak the ordering in which you write code such that
| it's easier for Copilot to understand.
|
| - How Copilot and other GANs work, in general. An awareness
| that Copilot is built on GPT-3, familiarity with what that
| implies, and so on.
|
| And if you don't, that results in _the AI_ seemingly not
| working as well, which makes it easy to make the assumption
| that it isn 't an incredibly useful tool. It is, it just has a
| learning curve measured in weeks.
|
| I believe this is why we constantly have arguments on whether
| or not it's helpful.
| threatofrain wrote:
| The Cloudflare cloud experience is "being sold short by subpar
| documentation" right now because important elements of their
| ecosystem are being ramped up from beta status. They also have
| internal docs which aren't kept up to date with their actual
| product. I'd check back in a few months because their beta
| experience can be _very_ touch-and-go.
| Leftb wrote:
| Agreed. One area where it's maybe not sold short but just
| hurting the UX; it's not immediately clear from their
| documentation that certain NextJS features you get
| 'automatically' on Netlify/Vercel just aren't supported yet.
| For example, using any kind of dynamic routing (i.e. going to
| `/books/:id` directly rather than clicking through) doesn't
| work yet as there's no router available to tackle this for you.
| According to their Discord, it's in the works but it has been
| in that state for a few months already.
|
| You can work around this with some Workers that capture the
| dynamic routes, request the nextjs html file and return that,
| but then you're using up your Functions quota as well.
| iot_devs wrote:
| Those function don't suffer from cold start time?
|
| When somebody hit my webserver for the first time, how long are
| they gonna wait for the page to be loaded?
|
| Assuming a noop in the functions part.
| tyingq wrote:
| It uses clouflare workers, which is just spinning up v8
| isolates, so there's no VM booting up. It's fast. They are also
| edge located. There are scenarios where using the kv or durable
| objects can cause a round trip back to the mothership, but not
| for reads.
|
| https://developers.cloudflare.com/workers/learning/how-worke...
| rs_rs_rs_rs_rs wrote:
| I like Pages, I hope they'll support hosting multiple projects
| from different branches of a repo at some point...
| Walshy wrote:
| We will :)
| gkoberger wrote:
| I feel like there's a large class of tools in this space now
| (Vercel, Netlify) that do all of this and more, and this post is
| less about Cloudflare Pages and more about the (really good)
| state of static hosting these days?
|
| One thing that stuck out was the comment about "Twitter cards",
| since Vercel/Next now has this built in:
| https://twitter.com/vercel/status/1579561293069316096
| tarasglek wrote:
| Author here. I actually thought about using this library. In my
| case re-rending as svg was too complex. Much more practical to
| upload screenshots of DOM, share those via
| functions/middleware.
| elondaits wrote:
| I'm happily using CloudFlare pages. The reason I haven't tried
| Netlify is that after the free tier everything seems a little
| overpriced. I didn't go for Vercel because I don't want to use
| Next.js and I'm afraid I'll run across some limitation because
| of this. I was already using Cloudflare as a CDN for S3 and
| GitHub pages, and their offerings seem to be growing quickly
| and wanting to compete with Amazon rather than the static
| hosting companies.
| jokethrowaway wrote:
| Vercel is pretty good as a generic static hosting. I run a
| handful of next.js, solid.js or vanilla html websites.
|
| Can't think of anything next.js specific you miss out on, you
| can just configure anything in a vercel.json file.
| emptysongglass wrote:
| If you don't want to deal with any of that but like MDX
| (think Markdown with the option of JavaScript), I believe
| motif.land publishes your MDX sites with Vercel.
| leerob wrote:
| All of the Vercel platform features you can use in Next.js
| (or other frameworks) are also available through the Build
| Output API for frameworks to target. This is what
| frameworks like SvelteKit, Nuxt, Solid, etc use on Vercel.
|
| https://vercel.com/blog/build-output-api
| cj wrote:
| Static hosting combined with server-side dynamic content
| modification using postgres was the interesting part for me.
|
| Static hosting has historically been seen as exactly that,
| static and immutable.
|
| Things like Cloudflare functions/workers can turn static
| hosting into dynamic content delivery while maintaining (most
| of) the benefits of static hosting.
|
| Granted, this can be done whether the underlying content is
| hosted on Cloudflare, AWS, or a server in your garage so long
| as it's proxied/CDN'd by a service like Cloudflare or
| Cloudfront+Lambda@edge, etc.
| datalopers wrote:
| I'm still struggling to understand how this is any different
| than an oldschool cms or blog with a cache in front.
| habibur wrote:
| no add + free.
|
| Plus CDN if that matters.
| quickthrower2 wrote:
| Having stuff served up near the user for speed, for one.
|
| Also DX being better
| rapind wrote:
| It's not. You can achieve the same or better results with
| Varnish. You can even achieve edge caching with Fastly
| (cloud varnish).
|
| I think of it just as a different approach, where the focus
| is static (cache) with dynamic layered in as necessary.
| This forces you to be more explicit about dynamic behaviour
| and treating cache as a priority concern.
| sofixa wrote:
| Yes, it's great because static/static+some dynamic bits fits
| _a lot_ of use cases and it 's quite simple to deploy, manage
| and maintain.
|
| It's nothing _that_ new though, Firebase (part of GCP) and
| Netlify have had that for years. CloudFlare just have the
| right combination of marketing, reputation, pricing and tech
| to make headlines with it again.
| huijzer wrote:
| > Yes, it's great because static/static+some dynamic bits
| fits a lot of use cases and it's quite simple to deploy,
| manage and maintain.
|
| Do you have some examples? I always get excited by this
| serverless stuff, but often the use-cases are quite limited
| if you think about it, or maybe I'm thinking wrong,
| especially if you take vendor lock into consideration.
| gadflyinyoureye wrote:
| This comment is about serverless in general, not this
| particular tech. I've been abusing serverless for three
| years now using a NestJS bridge to the API gateway. All
| API request get bulk routed to a single lambda. NestJS, a
| dependency injection system for Node, handles particular
| routing, JWT validation, etc. Then my code does all the
| backend stuff. If I ever need to move from AWS lambda to
| EC2 (due to payload size or sync call limitations), I
| can. Neat JS will boot normally. Little to no vendor
| lock-in, especially in the domain later thanks to Clean
| Architecture.
| gfodor wrote:
| I have never seen an example where you land a JS file in a
| static website in git and it just runs as part of server
| side middleware. Seems legit novel but would like to know
| other examples.
| neongreen wrote:
| Vercel serverless functions:
| https://vercel.com/docs/concepts/functions/serverless-
| functi...
| gfodor wrote:
| That's not middleware, is it? It's cool, but sits between
| what is discussed here and something like a FaaS. My
| understanding is that this post is about actually
| deploying middleware that runs during the serve of the
| static pages.
| OrvalWintermute wrote:
| This sounds similar to the old Server Side Includes [1] .
|
| In the 90s I was using SSI to build dynamic, but static sites
|
| -- header --
|
| -- hierarchal javscript menuing --
|
| -- content --
|
| -- footer --
|
| -- tail --
|
| [1] https://en.wikipedia.org/wiki/Server_Side_Includes
| pythonaut_16 wrote:
| Can you explain how Cloudflare Workers factor into hosting
| static pages on Cloudflare Pages vs hosting a React SPA on
| pages that talks to any other API?
|
| Like are the workers just serving as your backend at that
| point? Or are they doing something more or different as well?
| whimsicalism wrote:
| the workers are regenerating the static site on postgres
| push
| pythonaut_16 wrote:
| Ah, so still fully static vs. a SPA that uses REST or
| GraphQL. So then clients interact with it as static
| HTML/JS rather than hydrating it via Javascript.
| gfodor wrote:
| No it's pointing out the server side scripting part which was
| new to me. do analogs exist in those other hosting options?
| This seems like a really nice facility - closest analog client
| side wise is a service worker or something that adjusts fetch.
| darkerside wrote:
| It's funny, the simplicity really reminds me of server size
| scripting languages like ASP and PHP.
| sramam wrote:
| a bit off-topic, but couldn't resist:
|
| > As a shortcut, I used GPT-3 to generate a basic typescript
| function for me. This let me look at TS type definitions and get
| a better idea of what's available so I could get developing.
|
| As a long time programmer, I keep trying to maintain my
| skepticism of AI/ML techniques for program authoring. Comments
| like this are dissolving my objections by the minute...
| tarasglek wrote:
| See my comment re GPT above. It has saved me quite a few hours
| since I started using it.
| johnebgd wrote:
| Cloudflare continues to add capabilities to their free tier to
| attract users. Meanwhile, Netlify just ejected all of the free
| plan users who work off GitHub.
| musicale wrote:
| I wonder why the article (or glek.net in general?) takes so long
| to load.
| quickthrower2 wrote:
| You must be a long way from the edge :-)
| Cthulhu_ wrote:
| Title has been editorialized; there is no question mark in the
| original, and the capitalization is different.
|
| As people smarter than me have said, if a video or in this case
| article asks a question, the answer is usually "no".
| [deleted]
| ArtWomb wrote:
| Reminder: Cloudflare's "Worker's Launchpad" application for
| inaugural cohort approaches
|
| https://www.cloudflare.com/press-releases/2022/1-billion-wor...
|
| Recent thread on Learning Blender 3D has me thinking that a kind
| of "Blender Mentor" exchange with live zoom critiques & happy
| hour may be fun ;)
|
| https://news.ycombinator.com/item?id=33273022
| EarlKing wrote:
| untitaker_ wrote:
| What is really annoying is that Cloudflare pages will strip the
| file extension off of your html pages, and perform permanent
| redirects to those new URLs. Now if you're intending on moving to
| a new hosting service that doesn't do that (cgi-bin), all Google
| search results to your site will 404.
|
| Github pages and likely others also supports this format, so
| moving between those two services doesn't exhibit this problem.
| Moving to cgi-bin will.
|
| I'd suggest Cloudflare shouldn't try to establish their scheme as
| canonical url and rather implement github pages behavior, but
| what do I know... I'm just hosting an old fashioned blog, not a
| JAMstack/SPA/whatever thing
| tannhaeuser wrote:
| Maybe I'm misunderstanding, but Apache httpd has performed URL
| rewriting such as adding a .html suffix after mapping URLs to
| file names where appropriate, and other transformations such as
| content negotiation for languages, spelling correction, etc.
| for ages.
| untitaker_ wrote:
| Cloudflare automatically redirects any /foo.html URL to /foo,
| with a permanent redirect. That is certainly not standard
| behavior, neither on httpd nor gh pages
| sofixa wrote:
| Having .html file extensions is very old school, and its
| removal is one of the popular/default redirects on all http
| servers that support it. Site generators also hide it through
| various methods (e.g. having a folder with the path name with
| just an index.html where a dynamic redirect isn't possible).
| systemvoltage wrote:
| "Old school vs. new school" arguments should be replaced with
| "Pros vs Cons". Call me, old schooled.
| untitaker_ wrote:
| Site generators hiding it is not a problem for portability.
| Supporting that redirect is also not a problem! Permanent
| redirects are.
|
| Also, old-school is still the dominant way with how small
| sites are hosted, in terms of number of hosting providers who
| offer cgi hosting.
| qbasic_forever wrote:
| It was removed explicitly for SEO and having a single
| canonical URL for a resource _for all of time forever_. Right
| now we use HTML for web pages but who knows what the internet
| 20, 50, 100, etc. years from now will use--maybe .Super-
| Awesome-Mega-HTML is all the rage. If over time you are
| changing your site and its URLs are changing then you're
| breaking that canonical URL and search indexes, caches, way
| back machine, etc. all suffer. So the intent is don't make
| the format of the page (HTML) part of it's canonical URL.
| superkuh wrote:
| Yes. New school's defining feature is needless layering of
| complexity to hide the simple truth of the file system from
| users.
| texaslonghorn5 wrote:
| Maybe this is just me, but I like that I can decouple the
| way I organize my file system from the way users access my
| site. And with that comes the ability to get rid of file
| extensions and make urls more human-friendly. Remember, not
| every person has file extensions turned on by default on
| their Windows File Explorer!
| P5fRxh5kUvp2th wrote:
| texaslonghorn5 wrote:
| Ok, I set myself up for that.
|
| Do you have experience running websites that cater to the
| non tech savvy? How are your urls set up? Do they get
| confused where to find things? Do you use a database? Do
| you dynamically render content using templates?
| jon-wood wrote:
| Not the GP here, but having run websites for the non tech
| savvy I can say they have no problems with any sort of
| URL structure because they are oblivious to URLs. They
| enter your-site.com into Google, click the first result
| (even if that's an ad for your competitor), and then
| click round the links presented.
| neilalexander wrote:
| Is there a reason why someone visiting your website should
| know or care about file extensions?
| lenkite wrote:
| I guess no one should know whether a pdf is a pdf. Or
| even whether it's a .com or a .org domain - the browser
| should just strip all that confusing stuff away!
| texaslonghorn5 wrote:
| When you're serving someone an HTML file are you serving
| them the exact copy on your file system or do you ever
| use templates? Do you ever pull info from the database?
| If so, can you see why this is slightly different from
| directly serving a static pdf?
|
| Also note that you'll often see a PDF generated on the
| fly with a long, difficult to parse URL.
|
| Take up your second point with the W3 or whatever, to be
| honest if tlds weren't so important for phishing and
| whatnot it would probably be fine. I think some browsers
| have started doing that anyway. You overestimate how tech
| savvy the average user is, and by extension you
| overestimate how much the average user can keep track of
| all this complexity. Do you think most people have heard
| of .info or .xyz?
| lmm wrote:
| The user presumably wants to know what kind of content
| they're going to receive from a given endpoint -
| foo.html, foo.pdf, foo.jpg, foo.mp3 and foo.avi suggest
| quite different experiences, and it's nice to include
| that hint in the URL (where it's visible on mouseover)
| rather than the user having to go in blind. I also like
| being able to reassure the user that they're receiving
| the same piece of content however they access a given
| resource, rather than the possibility of invisible
| content negotiation changing the site's behaviour.
| neilalexander wrote:
| Such hints can be unreliable at best and misleading at
| worst. There is nothing to guarantee that the file
| extension and the Content-Type header will agree, nor is
| there anything to guarantee that the file name in the URL
| will match the download file name in the Content-
| Disposition header.
| lmm wrote:
| Well, sure, but you can just... not do that? The <title>
| tag can be misleading because there's no guarantee that
| the title matches the content of the page - but the
| answer to that is to use good titles for your pages, not
| to avoid using the <title> tag.
| neilalexander wrote:
| My point is that it isn't really reassuring for the user
| because of invisible negotiations. If anything, I would
| lean more towards guessing that users are, more often
| than not, either ignorant or untrusting of URL contents,
| either because the URLs so frequently look like nonsense
| (arbitrary content IDs instead of meaningful names) or
| because they have already proven to be unreliable
| elsewhere on the web (deep links not as deep as expected
| when copied or shared).
| lmm wrote:
| > If anything, I would lean more towards guessing that
| users are, more often than not, either ignorant or
| untrusting of URL contents, either because the URLs so
| frequently look like nonsense (arbitrary content IDs
| instead of meaningful names) or because they have already
| proven to be unreliable elsewhere on the web (deep links
| not as deep as expected when copied or shared).
|
| I think users are (rightfully) distrustful of URLs in the
| general case, but a URL having a file extension is
| actually a pretty good indication that it's a simple
| "does what it says on the tin". (Imgur changing their
| .jpg URLs to have more complex behaviour caused a pretty
| big backlash, for example)
| slig wrote:
| Can't you use their new Bulk Redirects to fix it?
| kc10 wrote:
| I exactly ran into this issue when migrating from a different
| provider to CF pages.
|
| I preferred to strip away the .html extensions anyway, so it
| was okay in my case. CF should trigger a HTTP 308 for older
| .html to the new urls automatically.
| dixie_land wrote:
| Having worked with some J2EE early in my career, I also had
| trouble mentally mapping "middleware" to an "interceptor"
| function when first encountering these "hip" frameworks
| sophacles wrote:
| Middleware is a concept far older than java.
| sgt wrote:
| Also think Servlet filters
| andrewstuart wrote:
| I tend to agree.
|
| Cloudflare services are awesome.
|
| Their documentation tends to be OK but thin. Certainly not great.
| Walshy wrote:
| We're working on the documentation, I agree it can certainly be
| thin (or just not understandable). Please do file an issue for
| any improvements you'd like to see:
| https://github.com/cloudflare/cloudflare-docs/issues
| andrewstuart wrote:
| I like documentation with lots of complete examples of every
| option.
|
| Reference guides with every object/function/method
| documented.
|
| Links to sample code on github.
| ZephyrBlu wrote:
| For Workers I've found that their docs are anything but thin.
| Extremely comprehensive and very helpful.
| londons_explore wrote:
| In 10 years time when cloudflare goes bankrupt/withdraws the free
| offering, will you be able to redeploy to another platform or
| will you start having to delve into 10 year old code and porting
| it to a new API?
|
| Is there at least an nginx-cloudflare module that lets you self-
| host this stuff?
| pantojax45 wrote:
| How does using GPT-3 make the types more visible? Feels
| futuristic but also incomprehensible to me.
|
| > As a shortcut, I used GPT-3 to generate a basic typescript
| function for me. This let me look at TS type definitions and get
| a better idea of what's available so I could get developing.
| lelandfe wrote:
| Hope the author responds, because that stuck out to me too!
|
| My assumption was that their prompt was something like
| "typescript cloudflare function" and they just used the
| resultant code to see types in action inside their IDE.
| wilg wrote:
| GitHub Copilot is GPT-3 under the hood, so maybe that way?
| tarasglek wrote:
| I use copilot, but not for this. I find raw gpt-3
| conversational interface to be much more useful for getting
| over various small programming puzzles.
| Filligree wrote:
| Prompted correctly, I find that Copilot can do pretty
| much everything GPT-3 can except generating long-form
| prose.
|
| You're probably right that it's more flexible, but then
| again I don't want to constantly switch out of IDEA.
| tarasglek wrote:
| Author here.
|
| I just got access to OpenAI codex. I used edit function and
| asked it to modify the JS hello world, to add typescript
| annotations.
|
| This is the git commit following that gpt conversation :)
| -export async function onRequest(context) { +export
| async function onRequest(context: { + request:
| Request; + env: { [key: string]: string }; +
| params: { [key: string]: string }; + waitUntil:
| (promise: Promise<any>) => void; + next: () =>
| Promise<void>; + data: { [key: string]: any };
| +}) {
|
| Not as minimal as the code I posted, but it got me over the
| stumbling block.
| jopsen wrote:
| lol, I was 50% sure that you were being sarcastic about
| using GPT-3, hehe
|
| But if anyone is edgy enough to use AI as a shortcut, I
| guess it would be the guy who did telemetry ingestion on a
| t2.micro :D
|
| Regards Jonas,
| harwoodjp wrote:
| Cloudflare Pages and Workers (and similar products) are indeed
| great but I recently switched over to a plain old free tier
| Oracle Cloud VM with FastAPI behind Nginx (Docker containers). I
| use Cloudflare as a proxy for HTTPS/certs. I don't have to think
| about Cloudflare Worker limitations, can host a Postgres
| instance, and simply deploy through `git pull` and `docker-
| compose up`.
| andrewstuart wrote:
| It's tempting to use the Oracle free instance but I wouldn't
| use it for production cause I don't trust it will be free in
| the long term.
| jprd wrote:
| But now Oracle has your financial information. I would rather
| give my Social Security number to a Nigerian prince.
|
| There's a reason Larry Ellison owns an entire Hawaiian island,
| and it ain't nothin' nice...it ain't nothin' nice (#QTip)
| alphabettsy wrote:
| Using Fly.io myself, behind Cloudflare. Free container hosting
| and free Postgres instance both big enough for my needs.
| svnpenn wrote:
| Fly.io is weird about overages:
|
| https://github.com/superfly/docs/issues/382
| Comevius wrote:
| The rest of the industry haven't even started figuring out what
| Cloudflare Pages Functions + Durable Objects can do. Workers can
| also send emails for free, and soon you will be able to process
| them as well with Email Workers. Cloudflare also doesn't charge
| you for egress either.
| donmcronald wrote:
| I mostly agree.
|
| > Workers can also send emails for free, and soon you will be
| able to process them as well with Email Workers.
|
| There's got to be _some_ limitations to that and I don 't like
| it when they're not well defined. Looking at the MailChannels
| pricing, it looks like it's roughly 40x more expensive than AWS
| SES on the low end and 4x on the biggest plan before
| negotiating a custom deal.
|
| I can send 500k emails and have a dedicated IP on SES for the
| same cost as 40k emails from MailChannels. Since their big
| value add seems to be scanning emails to prevent spam from user
| generated content, I just don't see it if that's not
| functionality you need because it's all wasted resources /
| unnecessary cost in those cases.
|
| I assume there's a point where it's no longer free and I'm
| guessing the cost once you get there will be high.
|
| Plus, am I sharing IPs with people who are sending such low-
| quality mail it requires outbound spam filtering? That seems
| like a huge negative on the deliverability side of things.
| jgrahamc wrote:
| I agree.
| matthews2 wrote:
| We just don't want to support MiTMFlare with our traffic and
| money.
| Comevius wrote:
| This should help you then. 200 square feet, only $11.39.
|
| https://www.amazon.com/Reynolds-Wrap-Aluminum-Foil-
| Square/dp...
| [deleted]
| rs_rs_rs_rs_rs wrote:
| Cloudflare reports 50% quarter growth year over year, it
| sounds to me you're in a minuscule minority.
| matthews2 wrote:
| Yes, let's simplify the Internet, being decentralised is
| such a crutch! We should all just connect directly to
| Cloudflare.
| rs_rs_rs_rs_rs wrote:
| You go ahead and play "being decentralised" with your
| buddies while people in the real world just mind their
| own business doing whatever they need to do using the
| current right tool for the job(in this case Cloudflare
| being the tool).
| dzikimarian wrote:
| People in the real world, who just cheerfully do
| business, with zero thought of impact or consequences of
| their actions beyond next paycheck, have put us in this
| awesome economic situation, we all know and enjoy.
|
| Surely blindly pushing, yet another corporation into
| position, where they can lobby virtually anything, is
| awesome idea. (Nothing against folks from cloudflare.
| They seem all right, but they will get acquired and/or
| change leadership at some point).
| anderspitman wrote:
| In nature, a lack of genetic diversity in a species isn't
| typically much of a problem until there's an extinction
| event, and then it can be a big problem.
|
| You might not feel the downsides of having a huge
| percentage of the internet going through a single
| provider until it's too late to change it.
|
| I actually quite like Cloudflare, and I don't think
| they're purposely doing anything nefarious (just
| following incentives like everyone), but I think caution
| is warranted.
| quickthrower2 wrote:
| At least it is not Microsoft, Google or Meta providing
| the monopoly! For now...
| schwartzworld wrote:
| Getting angry at people for using centralized solutions
| is not a way to win people over to your cause, and even
| many people who would prefer decentralized solutions are
| going to pick the easy route sometimes. If you're
| developing a web app, maybe you want to spend your time
| writing app code. People only have so much time in a day.
| blueflow wrote:
| That the majority does it does not mean its a good thing.
| rs_rs_rs_rs_rs wrote:
| It absolutely is, Cloudflare offers great services and
| they deserve it!
| anderspitman wrote:
| I think parent meant as a general principle following the
| masses isn't always the best idea.
| sophacles wrote:
| I'm always curious how you folks would CDN without SSL
| termination. Or you know, host anywhere but your own gear if
| MiTM was a real concern.
| anderspitman wrote:
| There's a huge amount of websites that don't need a CDN (my
| blog has frontpaged multiple times without one). And for
| many (all?) of the rest you'd be fine with 3-5 regions.
| CDNs _increase_ latency for low-traffic sites.
| quickthrower2 wrote:
| Weary of free as in beer. Often it is better to pay, for a
| situation where you are the actual customer.
| pid-1 wrote:
| wishlist: static page hosting for internal pages (e.g behind IP
| allowlists, SSO, etc...)
| 9dev wrote:
| That is integrated in Pages, it offers to set that up using
| Cloudflare Access. Fulfills your wishlist, and more.
|
| (Not affiliated)
| jacooper wrote:
| I am waiting for the time where we can host WordPress freely with
| static hosting and workers for admin ui/dynamic content.
|
| Otherwise static websites are only for devs.
| metadat wrote:
| Yeah, I have a few WordPress sites that would be great to move
| to SQLite (durable objects) / workers+functions.
|
| My sense is it's still a ways out from being practical, though.
| sofixa wrote:
| I've successfully run WordPress with the simply-static plugin,
| and a script to send to static hosting. WP run on an arm64
| instance that was only started when editing was needed.
|
| Besides WP, there are static CMSes that fit a modern workflow
| perfectly.
| colesantiago wrote:
| This.
|
| I keep seeing these 'JAMstack' sites are the new hot thing when
| a static wordpress site is enough and easier to update than
| 'JAMstack' sites, in reality these sites are just glorified
| HTML under a CDN.
|
| I don't see the benefit of JAMstack when you can just place a
| static WP site under a CDN like Cloudflare and have all the
| benefits of WP and a CMS to edit content.
|
| At least with Cloudflare they are more than just a CDN, others
| like Netlify and Vercel seem to be both over engineered and
| overpriced for what they do.
| solardev wrote:
| They solve different problems. WordPress is a full stack
| solution that's great for blogs and simple websites. The
| downside is that it's a lot of maintenance (requiring a LEMP
| stack) and not very portable. You have to copy over
| everything from the code to the database to the files to
| things like htaccess and nginx config. Hosts Like Pantheon
| and wpengine make that easier, but you're still bogged down
| by overhead. Scaling is really hard if mere caching doesn't
| work because you have to deal with Mysql replication and
| slaving. And what's really annoying about this setup is that
| you HAVE to deal with the whole stack. If the content writers
| want to preview their changes, you have to a clone them a
| staging environment. That means DB merges or overrides. And
| if you're simultaneously making other changes to the
| production DB, good luck reconciling the two.
|
| Jamstacks really shine when you can decouple the frontend
| from the backend(s), because then you have an easily
| replicable single repo with nothing but code. You can deploy
| it to any Jamstack host with a push and they handle all of
| the scaling and https and caching concerns. And the backend
| teams, whether an in house endpoint or content writers
| working on a hosted headless CMS, never have to care about
| the stack.
|
| A middle ground that's interesting to explore is using
| WordPress with Advanced Custom Forms as a backend plus a
| Jamstack frontend. ACF is still quite a bit more powerful
| than any of the headless CMS solutions I've tried, but it
| does mean you still have to maintain a LEMP stack, which is a
| headache in and of itself.
| girvo wrote:
| As much as I dislike it personally, WordPress's admin
| portal and plugins like ACF (among others) are simply
| unbeatable when the end result is handing the keys over a
| client, both due to power and familiarity.
|
| I wonder if that will change given enough time. I certainly
| hope so, but I would've guessed that it would've changed
| already, but here we are in 2022...
| nixcraft wrote:
| They have a product for that https://www.cloudflare.com/pg-
| lp/speed-up-wordpress-with-clo... It caches all pages on
| Cloudflare and only bypasses Cache on Cookies such as `wp-.
| _|wordpress._ |comment_. _|wordpress_logged_._ ` which is used
| by /wp-admin/ are and when someone posts a comment. This turns
| your WP into static without doing anything special. Or you can
| write a custom cache rule for cookies using "Page Rules" or
| newly introduced "Cache Rules" beta
| https://developers.cloudflare.com/cache/about/cache-rules/
|
| Also check - a WordPress plugin for static site generation and
| deployment https://github.com/WP2Static/wp2static
| ianbutler wrote:
| Side note: As someone who wanted a high level overview of Durable
| Objects, the Cloudflare announcement page 404s
|
| https://blog.cloudflare.com/introducing-workers-durable-obje...
| kentonv wrote:
| Thanks for catching this. Not sure what happened exactly but
| jiggling the handle (republishing the post) seems to have fixed
| it.
| ianbutler wrote:
| Yup, and thank you for fixing it!
| quickthrower2 wrote:
| This sounds magical:
|
| > Durable Objects make this easy. Not only do they make it easy
| to assign a coordination point, but Cloudflare will
| automatically create the coordinator close to the users using
| it _and migrate it_ as needed, minimizing latency.
___________________________________________________________________
(page generated 2022-10-23 23:00 UTC)